C语言 尽管使用float数据类型,乘法总是结果为0


#include <stdio.h>
int main()
{
float income;
printf("enter your annual income here:");
scanf("%f", &income);
if (income < 250000)
{
printf("no income tax"); /* code */
}
else if (income >= 250000 && income < 500000)
{
printf("your income tax will be:%f", 5 / 100 * income);
}
else if (income >= 500000 && income < 1000000)
{
printf("your income tax will be:%f", 20 / 100 * income);
}
else if (income >= 1000000)
{
printf("your income tax will be:%f", 30 / 100 * income);
}
return 0;
}

当我运行代码时,输入大于250000的值,即使我使用了float数据类型,我仍然得到0作为我的tax输出。

在表达式5 / 100 * income中,乘法运算符*和除法运算符/具有相等的优先级,并且从左到右分组。解析为(5 / 100) * income

子表达式5 / 100对除法运算符有整数参数,因此结果被截断为整数。结果为0.

如果您将操作数中的一个(或两个)更改为浮点常量,即5.0 / 100,5 / 100.05.0 / 100.0,则将发生浮点除法,并将得到预期的结果。

20 / 10030 / 100也有同样的问题,所以分别改为20.0 / 10030.0 / 100

或者完全去掉除法,使用常量0.050.20.3

相关内容

  • 没有找到相关文章

最新更新