涉及双精度数的计算

Computations involving double numbers

本文关键字:计算 双精度      更新时间:2023-10-16

对于下面的代码,为什么cellSide的值不是0.8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

/*****Additional info *******
*#define RADIUS 4
*double cellSide = 0.0  ;
*int iCelleParameter=10;
*****************************/
cellSide = 2 * RADIUS / (double)iCelleParameter;

浮点数和双精度数不能总是准确地表示数字,所以有时它们有点偏差。 对于货币类型值,它可以工作,因为您可以四舍五入到最接近的两位数。

例如,如果您将值设置为 0.1,它可能会说 0.0999999999 或 0.100000000001(我不确定它到底是什么,只是它会偏离一点点)。 这对于浮点数和双精度数是正常的。

更新

:上面更新了,因为有人指出我的原始 2.0 示例可以准确表示,但 0.1 是一个无法准确表示的数字示例。