我最近遇到了一些與R相關的奇怪事情。它不能寫總和(即使是簡單的),我尋找任何精度問題,但它似乎並不是問題所在。R得到錯誤的結果總和
任何想法可能導致什麼?
> 0.1+0.2-0.4
返回
> [1] -0.099999999999999977796
我最近遇到了一些與R相關的奇怪事情。它不能寫總和(即使是簡單的),我尋找任何精度問題,但它似乎並不是問題所在。R得到錯誤的結果總和
任何想法可能導致什麼?
> 0.1+0.2-0.4
返回
> [1] -0.099999999999999977796
這將關閉作爲解釋正在發生的事情的重複的問題的答案。但對於一個快速的小事情,希望這有助於:
> options(digits = 22)
> .1 + .2 - 0.4
[1] -0.09999999999999997779554
> 0.1
[1] 0.1000000000000000055511
> 0.2
[1] 0.2000000000000000111022
> 0.4
[1] 0.4000000000000000222045
你不能在計算機上完美地表示0.1。它適用於二進制,因此只有2的冪可以十進制形式完美表示。一些更多的例子:
> 1/2^2
[1] 0.25
> 1/2^3
[1] 0.125
> 1/2^4
[1] 0.0625
> 1/3
[1] 0.3333333333333333148296
你可以用一些設置顯示精度像
options(digits=10)
但這並不影響計算的實際精度 - 大多數非整數值(如0.1)在浮點運算中不能完全表示。
在這裏看到的引入浮點運算:
http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html
謝謝你的快速回答,爲重複道歉,我在其他頁面找不到答案。再次感謝 ! 乾杯 – Romain