关于浮点精度:为什么迭代次数不相等?
|
有两个类似的matlab程序,一个重复10次,另一个重复11次。
一:
i = 0;
x = 0.0;
h = 0.1;
while x < 1.0
i = i + 1;
x = i * h;
disp([i,x]);
end
另一个:
i = 0;
x = 0.0;
h = 0.1;
while x < 1.0
i = i + 1;
x = x + h;
disp([i,x]);
end
我不明白为什么浮点加法运算和倍数运算有区别。
没有找到相关结果
已邀请:
3 个回复
缝皋
还要与使用MATLAB \的COLON运算符进行比较:
如果要查看64位二进制表示形式,请使用:
一些建议的读物(与MATLAB相关): Cleve \'s Corner 1996年文章 一瞥浮点数 准确性 我如何确定错误 我的答案是四舍五入的结果 错误还是错误? COLON运算符如何 工作?
犯痪桂涛杭
在进行乘法与单独加法时,它只是将差值打印为一个。 由于浮点数的表示形式不准确,因此结果如下所示:
因此,如果在后一种情况下将其用作循环条件,则将进行额外的迭代(尚未达到一个迭代)。 尝试使用计数器变量
,它是一个整数,因此您不会遇到此类问题。
掸牛浓疗