2017-06-20 24 views
1

我試圖在小數點後打印更多數字。所以用了「mpfr」功能。但是,爲什麼我會得到這個結果呢?來自Rmpfr包的mpfr函數

> mpfr(1/5, 120) 
1 'mpfr' number of precision 120 bits 
[1] 0.20000000000000001110223024625156540424 

爲什麼打印「1110223024625156540424」後的結果爲0?

回答

1

因爲你給了它一個不是你認爲的數字。該部門首先作爲雙精度操作完成。

1/Rmpfr::mpfr(5, 80) 
1 'mpfr' number of precision 80 bits 
[1] 2.0000000000000000000000004e-1 

> 1/Rmpfr::mpfr(5, 120) 
1 'mpfr' number of precision 120 bits 
[1] 2.0000000000000000000000000000000000004e-1 

我的另一種方法由5更高的精度版本,然後將其通過的/的MPFR版本(除法函數)來處理。

看你得到了什麼:

methods(`/`) 
+0

謝謝。你知道爲什麼最後打印4嗎? – Mac

+0

不,我不知道。也許馬丁Maechler會徘徊。 ISTR是他的包裹。 –