Octave 1/3和0.1值

时间:2014-04-02 10:47:10

标签: octave precision floating-point-precision rounding-error

为什么Octave在给出1/30.1时会给我以下结果?

octave:1> (4/3-1)*3-1
ans = -2.2204e-16

octave:2> (10.1-10)*10-1
ans = -3.5527e-15

octave:3> (10.125-10)*8-1
ans = 0

1 个答案:

答案 0 :(得分:2)

这是floating point arithmetic的结果。您的计算机无法完全准确represent 4/3 as a floating point binary number因此会出现舍入错误。但是它可以完全准确represent 10.125 in binary,因此没有错误。

换句话说,考虑小数点后的数字部分。对于4/3,我们有0.333333 ...这是0.010101010101 ...二进制。您的计算机之后无法存储无限数量的数字,因此它会截断到某种精度。然而,对于10.125,考虑什么是0.125是二进制的,简单地为0.001。所以只有三个"十进制"以二进制形式指向,因此没有截断,也没有舍入错误。