我遇到了R.的問題。R中的簡單除法產生錯誤的結果
如果我插入以下除法,我會得到這些結果。
9207550/4
結果:
2301888
但它應該是:
2301887.5
如果我添加擴展的分子和分母數爲零,我得到了相同的結果:
9207550.0000/4.0000
2301888
有人遇到同樣的問題?有人可以向我解釋這種行爲嗎?
預先感謝您。 任何幫助表示讚賞。
我遇到了R.的問題。R中的簡單除法產生錯誤的結果
如果我插入以下除法,我會得到這些結果。
9207550/4
結果:
2301888
但它應該是:
2301887.5
如果我添加擴展的分子和分母數爲零,我得到了相同的結果:
9207550.0000/4.0000
2301888
有人遇到同樣的問題?有人可以向我解釋這種行爲嗎?
預先感謝您。 任何幫助表示讚賞。
R
中有一個選項用於控制顯示的位數。舉個例子:
options(digits=5)
,或者如果你是不是科學記數法的粉絲則:
options(digits = 999)
大多數系統往往有一些默認的顯示精度內置的,但是這是從實際計算不同正如@jogo所述。當涉及到結果再現時,R
與任何這些系統沒有什麼不同。
至於計算而言,基本R
計算將是足夠的,你會在一天應付一天的生活最號碼,但是,如果你真的想精確到n
小數其中n
通常可大於15,我會建議使用gmp
,Rmpfr
或rcdd
包。
編輯
我只注意到你的企圖在float
師。某些語言版本如python 2.xx在涉及到floats
與integers
時有不同的劃分處理方式,因此在記錄時間時考慮到了存儲和計算效率。這個差異現在已經在最新版本中消失了。統計學家爲統計學家建造了R
,所以你可以放心,當涉及到數學運算時,默認治療方法會有所不同。數字是他們是 - 數字。 Int
和float
是程序結構,而不是數學結構。
'print(9207550/4,digits = 10)'所以它的光學錯覺/默認打印怪癖。請參閱'?print.default'。實際上,您可以在控制檯上輸入'2301887.5',也可以看到舍入。 – Frank
你已經向我們展示了印刷的結果。這與計算結果不同。計算結果如您所料:'x < - 9207550/4; 4 * x' – jogo
@Frank謝謝你的評論。我看到我誤解了結果。 –