-1

从 printf 得到一些奇怪的结果。

double scale = 129 / 1024;

printf("%f \n", scale);

正在打印 -0.000000、0.000000 或一些巨大的随机数,如 947634637338383939387378370000000000000.00000。每次我编译和运行时,它似乎在这些之间随机交替。该程序还有很多内容,但我无法弄清楚在这种情况下可能会影响 printf 的原因。这正是这两个语句在我的程序中出现的方式。我做了什么?

4

2 回答 2

0

我希望它一直打印0.000000(129 / 1024) = 0用于整数算术。

于 2013-08-05T23:58:27.867 回答
0

打印零不是不稳定的行为,它向您显示除法的结果129/1024,并且由于这两个数字都是整数,因此结果为 0。然后将其分配给双精度数。

通过更改129为 来解决该问题129.0,这使其成为一个double值。

“大数”无法从我们看到的代码中解释。然而,我猜想有比这两行更多的代码,并且可能在其他地方出现了影响结果的问题。

于 2013-08-05T23:59:31.927 回答