2017-05-03 42 views
-1

我遇到了R.的問題。R中的簡單除法產生錯誤的結果

如果我插入以下除法,我會得到這些結果。

9207550/4 

結果:

2301888 

但它應該是:

2301887.5 

如果我添加擴展的分子和分母數爲零,我得到了相同的結果:

9207550.0000/4.0000 

2301888 

有人遇到同樣的問題?有人可以向我解釋這種行爲嗎?

預先感謝您。 任何幫助表示讚賞。

+8

'print(9207550/4,digits = 10)'所以它的光學錯覺/默認打印怪癖。請參閱'?print.default'。實際上,您可以在控制檯上輸入'2301887.5',也可以看到舍入。 – Frank

+2

你已經向我們展示了印刷的結果。這與計算結果不同。計算結果如您所料:'x < - 9207550/4; 4 * x' – jogo

+1

@Frank謝謝你的評論。我看到我誤解了結果。 –

回答

2

R中有一個選項用於控制顯示的位數。舉個例子:

options(digits=5) 

,或者如果你是不是科學記數法的粉絲則:

options(digits = 999) 

大多數系統往往有一些默認的顯示精度內置的,但是這是從實際計算不同正如@jogo所述。當涉及到結果再現時,R與任何這些系統沒有什麼不同。

至於計算而言,基本R計算將是足夠的,你會在一天應付一天的生活最號碼,但是,如果你真的想精確到n小數其中n通常可大於15,我會建議使用gmp,Rmpfrrcdd包。

編輯

我只注意到你的企圖在float師。某些語言版本如python 2.xx在涉及到floatsintegers時有不同的劃分處理方式,因此在記錄時間時考慮到了存儲和計算效率。這個差異現在已經在最新版本中消失了。統計學家爲統計學家建造了R,所以你可以放心,當涉及到數學運算時,默認治療方法會有所不同。數字是他們是 - 數字。 Intfloat是程序結構,而不是數學結構。

相關問題