You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言计算输出整数而非小数的问题排查

问题修复:保留计算的小数部分

你的代码有两个关键问题导致输出不符合预期:

  1. 整数截断丢失小数
    变量amount是int类型,当执行amount = amount * .33时,即便乘法结果是带有小数的浮点数,也会被强制转换为整数(因为要赋值给int变量),直接丢弃小数部分。比如输入19522时,19522*0.33=6442.26,转成int后就变成6442,后续再转double也只能得到6442.00。

  2. 变量名拼写错误
    printf语句里的new_amout是拼写错误,正确的变量名是new_amount,这个错误会导致编译失败。


修复后的代码:

#include <math.h>
#include <stdio.h>

int main(void) {
  int amount;
  
  // 用户输入年收入
  printf("Enter your amount: ");
  scanf("%d", &amount);

  double new_amount;
  if(amount <= 34000)
    // 直接计算为double类型,避免整数截断
    new_amount = amount * 0.33;
  else
    // 可根据需求补充金额超过34000时的计算逻辑
    new_amount = amount;

  printf("your calculated amount: %.2f\n", new_amount);

  return 0;
}

关键修改说明:

  • 将计算结果直接存储到double类型的new_amount中,跳过整数类型的中间赋值,完整保留小数部分。
  • 修正变量名拼写错误,确保编译正常运行。
  • 补充else分支(原代码未处理金额超过34000的情况),可根据实际业务逻辑调整这部分内容。

内容的提问来源于stack exchange,提问作者DataandCodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 13:17:31