【发布时间】:2021-11-05 13:45:41
【问题描述】:
#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 作为我的税收输出。
【问题讨论】:
-
5 / 100始终为 0 - 你应该阅读整数除法 -
试试,例如:
printf("Value: %f\n", (25.0 / 100) * income); -
@UnholySheep 是的,这就是我使用浮点数据类型的原因,所以我认为它应该适用于十进制数
-
不——整数除法完成,产生 0,然后乘以
float,所以 0 乘以任何东西都是 0(忽略 NaN 和无穷大)。 -
您的编译器会将
5/100分块为一个数字,该数字为零。