我听说像 0.1 + 0.2 这样的浮点运算可能会由于内部使用二进制浮点而产生像 0.30000000000000004 这样的舍入误差。
但是,如果我在 C++ 中向任何浮点数添加 0,是否能保证产生相同的值而没有任何舍入误差?我不知道浮点运算是如何工作的以及何时出现舍入误差。
IfC++ 实现支持 IEEE754 数学,那么这是有保证的。 IEEE754 标准对数学运算有精确的定义,因此 C++ 没有定义自己的规则。但 IEEE754 支持不是强制性的。
x + 0.0 == x
对于任何数字 (*) 都是如此,因为 IEEE754 保证加法、减法、乘法和除法精确到最后一位。
(*) 当 x 不是数字 (NaN) 时,x+0.0
也是 NaN,但是NaN != NaN
在 IEEE754 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)