Rsh*_*Rsh 1 c python floating-point gcc
为什么这两个表达式的结果应该不同?
在gcc和python中也会发生同样的事情.这里发生了什么?有什么方法可以预防吗?


浮点数的精度有限.如果向较大数字(1e20)添加一个小数字(3),则结果通常与大数字相同.因此,就是这种情况
(3 + 1e20) - 1e20 = 1e20 - 1e20 = 0
Run Code Online (Sandbox Code Playgroud)
精度double大约是15位十进制数,floats大约有7位十进制数.