float taxednumber = number * (float)(20/100.0);
taxednumber = number - taxednumber;`
如果输入的数字是135,我收到的税号是1966805346.为什么它变得这么大?我尝试了很多不同类型的分工来解决这个问题,经过多数尝试后,这是我的最终结果。对数字进行故障排除只是向我展示了我看到的正常值,因此问题必须在计算中出现。
编辑:我使用的编译器是Codeblocks中的GNU GCC
答案 0 :(得分:0)
您不显示数字的数据类型。如果使用浮点数,则使用浮点数... 20是整数,20.0是浮点数。如果number不是float,则会导致显示两行代码的问题。
编辑:由于OP说他正在使用gcc,我写了一些代码。
#include <stdio.h>
main()
{
int number = 135;
float taxednumber = number * (float)(20/100.0);
printf("number: %d\n", number);
printf("taxednumber: %f\n", taxednumber);
printf("int calc: %d\n", 20/100.0);
printf("float calc: %f\n", (float)(20/100.0));
printf("float with cast calc: %f\n", (float)((float)20/100.0));
}
<强>输出:强>
number: 135
taxednumber: 27.000000
int calc: -1717986918
float calc: 0.200000
float with cast calc: 0.200000
原始问题的信息很少,OP可能很简单,OP使用错误的输出格式打印值(参见“int calc”行)。
使用环境:使用Ubunto在VirtualBox上使用gcc。