从printf获得一些奇怪的结果。
double scale = 129 / 1024;
printf("%f \n", scale);
正在打印-0.000000,0.000000或一些巨大的随机数,如947634637338383939387378370000000000000.00000。每次编译和运行时,它似乎在这些之间随机交替。程序还有很多,但我无法弄清楚在这种情况下可能会影响printf的原因。这正是我的程序中出现这两个语句的方式。我做了什么?
答案 0 :(得分:0)
我希望它能一直打印0.000000
。 (129 / 1024) = 0
用于整数运算。
答案 1 :(得分:0)
打印零而不是不稳定的行为,它显示129/1024
除法的结果,并且因为这两个数字都是整数,结果为0.然后将其分配给double。
通过将129
更改为129.0
来修复该问题,这使其成为double
值。
无法从我们可以看到的代码中解释“大数字”。我猜这里有比这两行更多的代码,并且其他地方可能会出现影响结果的问题。