0
我已經寫滿數字的列向量pp
的最後一個非零位的位置,例如:Matlab的:找到了一些
23.234000
3.1237340
4.4359000
我想找到的名額小數點的右邊矢量中最小的非零數字佔據,在這種情況下,由於3.123734
中的4
,在這種情況下將爲6
。然後,我想將矢量中的每個數字乘以10^6,以消除矢量中的所有小數。我想這樣做以消除舍入錯誤。完成這件事的最好方法是什麼?
我已經寫滿數字的列向量pp
的最後一個非零位的位置,例如:Matlab的:找到了一些
23.234000
3.1237340
4.4359000
我想找到的名額小數點的右邊矢量中最小的非零數字佔據,在這種情況下,由於3.123734
中的4
,在這種情況下將爲6
。然後,我想將矢量中的每個數字乘以10^6,以消除矢量中的所有小數。我想這樣做以消除舍入錯誤。完成這件事的最好方法是什麼?
實際值可能不同於實際顯示的。例如,考慮下面的例子:
>> 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位數字),然後乘以相應的冪數。
您能否通過消除舍入誤差來更詳細地描述您的意思?因爲這是舍入錯誤,會讓我說這是不可能的。你怎麼知道'3.1237340'實際上不是'3.12373400000000000009884'? – Dan
我同意丹,在浮法/雙重表示中,任何數字都是最接近機器能夠代表的。有效數字的數量真的是重要因素,乘以1.0e6並不會真正改變精度。 – radarhead
一些例子,爲什麼你必須小心二進制系統上的浮點數在這裏給出:[TMW:Floating-Point numbers](http://www.mathworks.de/de/help/matlab/matlab_prog/floating-點numbers.html) –