Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
从 printf 得到一些奇怪的结果。
double scale = 129 / 1024; printf("%f \n", scale);
正在打印 -0.000000、0.000000 或一些巨大的随机数,如 947634637338383939387378370000000000000.00000。每次我编译和运行时,它似乎在这些之间随机交替。该程序还有很多内容,但我无法弄清楚在这种情况下可能会影响 printf 的原因。这正是这两个语句在我的程序中出现的方式。我做了什么?
我希望它一直打印0.000000。 (129 / 1024) = 0用于整数算术。
0.000000
(129 / 1024) = 0
打印零不是不稳定的行为,它向您显示除法的结果129/1024,并且由于这两个数字都是整数,因此结果为 0。然后将其分配给双精度数。
129/1024
通过更改129为 来解决该问题129.0,这使其成为一个double值。
129
129.0
double
“大数”无法从我们看到的代码中解释。然而,我猜想有比这两行更多的代码,并且可能在其他地方出现了影响结果的问题。