matlab - 控制分割精度

标签 matlab precision

考虑以下简单的除法:

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/

相关文章:

matlab - 卸载矩阵和释放内存

matlab - matlab中数组转向量的方法

java - 精度损失误差

c - 使用 GNU/GCC 四精度库出错

C# float 转十进制

MATLAB: "Normalize"矩阵元素为 1 或 0

matlab - 为什么我在不同版本的 MATLAB(2016 与 2021)中得到不同的结果?

matlab - 将一个matlab矩阵分成几个相等的部分

c - 两个浮点加法不改变结果

java - 如何修复 Symja 中的精度?