我想计算(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