对于以下代码,为什么cellSide的值不是0.80000000000000000而是0.80000000000000004。
/*****Additional info *******
*#define RADIUS 4
*double cellSide = 0.0 ;
*int iCelleParameter=10;
*****************************/
cellSide = 2 * RADIUS / (double)iCelleParameter;
答案 0 :(得分:-1)
浮点数和双打数不能完全代表数字,所以有时它们有点偏差。对于货币类型值,它可以工作,因为您可以舍入到最接近的两位数。
例如,如果将值设置为0.1,则可能会说0.0999999999或0.100000000001(我不确定它究竟是什么,只是它会偏离一点点)。这对于花车和双打来说是正常的。
更新:上面已经更新,因为有人指出我的2.0原始示例可以准确表示,但0.1是一个无法准确表示的数字示例。