我想計算(1.0-p)^n
其中p是0到1之間的一個雙精度值(通常非常接近0),n是一個正整數,可能大約爲數百或數千(也許更大;我還不確定)。如果可能的話,我希望僅僅使用java.lang.Math.pow(1.0-p, n)
中的Java構建這個,但是我略微擔心,在我感興趣的值的範圍內,可能會有巨大的準確性/精確度損失。是否有人有一個關於使用Java的實現可能會出現什麼樣的錯誤的粗略想法?我不確定它們的實現(日誌和/或泰勒近似值)背後發生了什麼,所以我不能冒險一個好猜測。對於大n,java.lang.Math.pow(x,n)的準確性/精確性如何?
我最關心的是相對誤差(即不超過一個數量級)。如果答案結果是Java的實現會產生太多的錯誤,那麼您是否有任何好的庫建議(但是我希望這不再需要)?謝謝。
找到我實際上檢查過Javadoc,但我不知何故錯過了這一行,謝謝。至於'BigDecimal',在我意識到'n'是一個整數之前,我已經排除了這一點。我認爲這也會起作用。 – 2011-04-05 21:35:55