标签: c++ types casting
这可能是一个愚蠢的问题,但我遇到了一个奇怪的问题。
我发现这行代码
cout << long((15.25-14.74)*100) << endl
将输出50.而这一行
cout << long(0.51*100) << endl
将输出51。
我的问题是为什么它们不同,为什么第一个输出50而不是51?
答案 0 :(得分:4)
在浮点算术中,实数有时可能不是你所期望的,因为精度是有限的。在您的情况下,0.51实际上是0.50999999。
0.51
0.50999999