> 0.1 * 3
0.30000000000000004
> 0.1 + 0.2
0.30000000000000004
计算机内部以二进制形式存储浮点数,其中包括一个尾数(mantissa)和指数(exponent)。但是,许多十进制小数无法精确地转换为有限位数的二进制小数。
举个例子,0.1 在十进制中是一个简单的小数,但在二进制中却是一个无限循环小数。因此,当计算机尝试表示 0.1 时,它实际上存储的是一个近似值。
这种近似值可能会在连续计算中积累误差,导致最终结果与期望值略有不同。这就是为什么在一些情况下,像你提到的数学运算结果会出现微小的舍入误差。
为了减少这种误差,可以使用一些技术,比如舍入规则(如四舍五入或截断),或者使用更高精度的数值表示方法(如使用任意精度算术库)。