Matlab:找到一个数字的最后一个非零数字的位置

时间:2013-07-31 13:22:23

标签: matlab rounding-error

我有一个用数字填充的列向量pp,例如:

23.234000
3.1237340
4.4359000

我想找到向量中最小的非零数字所占的小数点右边的位数,在这种情况下为6,因为4位于{{ 1}}。然后我想将向量中的每个数乘以10 ^ 6,以除去向量中的所有小数。我想这样做是为了消除舍入错误。完成这项工作的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

实际值可能与MATLAB实际显示的内容不同。例如,请考虑以下示例:

>> x = 1.4 - [0.1; 0.09999999]

x =
   1.3000
   1.3000

MATLAB将两个值都显示为1.3,但事实上,它们都不是:

>> x - 1.3

ans =
  -2.2204e-16
   1.0000e-08

因此,我的建议是确定一个固定的准确度(例如,6位数),然后乘以相应的10的幂。