2010-11-13 35 views
1

我覺得在Matlab中出現錯誤的地方是用來顯示數字e的小數位數。 如果把Matlab_Is數字e的表示有錯誤嗎?

>> sprintf('%.30f',exp(1)) 

ans = 

2.718281828459045500000000000000 

enter code here 

我認爲這是錯誤的,因爲數量和包含小數,而不是僅僅在這個例子中,16 MATLAB顯示無限多的。 有誰知道如何使用Matlab獲得更好的精度? 謝謝。

+0

我建議你閱讀woodchips對我的回答的評論 - 儘管你在小數點後得到更多數字,但它並不是更準確。 – 2010-11-15 15:36:34

回答

10

不,沒有錯誤。

默認情況下,Matlab中的數字由double-precision floating point表示。這些有52位尾數,大約相當於16位有效數字。要求Matlab打印出更多的小數位不會奇蹟般地創造出更高的精度。

這是不太可能的,你會需要更多的精度比這個。

3

關於double precision and MATLAB的一些補充信息。

在全IEEE系統,該間距是 2- 52. MATLAB調用此量EPS,這是短期的 機器最小。

EPS = 2 ^( - 52)

IEEE標準之前,不同的機器有EPS的不同 值。 eps的近似十進制值是2.2204•10-16。 eps/2或eps可以稱爲舍入級別。將單個 算術運算的結果四捨五入爲最接近的浮點數 的最大相對誤差爲eps/2。 數字之間的最大相對間距爲eps。無論哪種情況,您都可以說四捨五入的 級別大約有十六位十進制數字。