在尝试进行简单的浮动分割时收到大量的数据

时间:2014-06-06 05:30:41

标签: c++

float taxednumber = number  * (float)(20/100.0);
taxednumber = number - taxednumber;`

如果输入的数字是135,我收到的税号是1966805346.为什么它变得这么大?我尝试了很多不同类型的分工来解决这个问题,经过多数尝试后,这是我的最终结果。对数字进行故障排除只是向我展示了我看到的正常值,因此问题必须在计算中出现。

编辑:我使用的编译器是Codeblocks中的GNU GCC

1 个答案:

答案 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。