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.
为什么这两个表达式的结果应该不同? 同样的事情发生在 gcc 和 python 中。这里发生了什么?有什么办法可以预防吗?
浮点数的精度有限。如果将小数 (3) 与大数 (1e20) 相加,结果通常与大数相同。这里就是这种情况,因此
(3 + 1e20) - 1e20 = 1e20 - 1e20 = 0
的精度double大约是 15 位十进制数字,floats 大约有 7 位十进制数字的精度。
double
float