Matlab 为什么100*0.07等于6.9999。。。。?
我的一个朋友在Matlab中写了以下内容,结果有点奇怪:Matlab 为什么100*0.07等于6.9999。。。。?,matlab,Matlab,我的一个朋友在Matlab中写了以下内容,结果有点奇怪: for p=0.01:0.01:0.1 100*p end 结果如下: 1 2 3 4 5 6.000000000000001 6.999999999999999 8 9 10 我想知道为什么会有一个小错误?这是否意味着,在一般情况下的准确性也和在这种情况下一样差 编辑: 我们比较了数字--7==6.999999999999,结果是0。因此,Matlab自相矛盾 看起来像是浮点精度的“问题”:问题是0.01不能用二进制浮点精确表示
for p=0.01:0.01:0.1
100*p
end
结果如下:
1
2
3
4
5
6.000000000000001
6.999999999999999
8
9
10
我想知道为什么会有一个小错误?这是否意味着,在一般情况下的准确性也和在这种情况下一样差
编辑:
我们比较了数字--
7==6.999999999999
,结果是0
。因此,Matlab自相矛盾 看起来像是浮点精度的“问题”:问题是0.01不能用二进制浮点精确表示。0.07也不能尝试
x = ((0.07+1)*100) - 100
;-) 获得7%(值为0.07)映射回正确的UI表示,即7。但后来我尝试了这个:
[0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.10].map(n=>((n+1)*100)-100)
输出:(10)[1,2,3,4,5,6,7,8,9.000000000000014,10.000000000000014]
它不适用于其他数字,例如9和10,这是真的:/而且很遗憾:'(我们可以尝试数学(1+1)*100)
,但它只能以2位小数的精度工作。