Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 为什么100*0.07等于6.9999。。。。?_Matlab - Fatal编程技术网

Matlab 为什么100*0.07等于6.9999。。。。?

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不能用二进制浮点精确表示

我的一个朋友在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不能用二进制浮点精确表示。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位小数的精度工作。