非常奇怪的算术bug
5次观看(过去30天)
显示旧注释
你好,
基本上就是在一个数字上不断加0.001。这个数列从0开始,所以得到的数字应该总是0.01的倍数,但是它最终退化成像5.874000000000296这样的数字——显然不是0.001的倍数!
你能解释一下原因吗?Matlab真的不能处理如此精确的数字吗?这是一个数学包!!
运行以下代码以重现错误。我运行的是7.10.0(R2010a)。
只需运行log=testcase(),然后在变量编辑器中检查log的后半部分——当您双击一个单元格展开它时,您将能够看到精度的不足。
函数[log] = testcase()
%这样运行:log=testcase()
%然后在变量编辑器中检查日志。
运行时= 20;
t = 0;
dx = 0.001;
i = 1;
日志(我,1)= t;
= 2;
为我= 2:运行时/ dx
t = t + dx;
日志(我,1)= t;
结束
结束