考虑以下简单的除法:
A=8.868;
A/0.1
ans =
88.679999999999993
由于浮点精度,这会导致一个小错误。有什么办法可以防止这种情况发生吗?基本上我所做的就是将逗号移动一个位置,同时不接近 MATLAB 中允许的最大位数。
我想获得如下结果:
A/0.1
ans =
88.68
尾随零无关紧要,只要它们只是零,并且不包含第 14 位左右的数字。
有趣的是,当四舍五入到 N
位时也会出现这个问题:
R = (randi([8659 49847],[1e3 1]))/1e3;
xmin = min(R);
el = 0.1;
step = 1/el;
tmp1=xmin/el;
tmp2=round(tmp1);
tmp3=round(tmp2*el,3);
tmp3 =
8.699999999999999
最佳答案
使用符号数学,您可以获得精确的结果:
x=sym('8.868')/sym('.1')
关于matlab - 控制分割精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33754807/