我想计算(1.0-p)^n
其中 p 是 0 和 1 之间的双精度数(通常非常接近 0),而 n 是一个正整数,可能是数百或数千的数量级(可能更大;我还不确定)。如果可能的话,我很乐意为此使用内置的 Java java.lang.Math.pow(1.0-p, n)
,但我有点担心在我感兴趣的值范围内这样做可能会导致准确性/精度的巨大损失。有没有人有粗略了解使用 Java 的实现可能会出现什么样的错误?我不确定在他们的实现中发生了什么(日志和/或泰勒近似?),所以我不能冒险一个很好的猜测。
我最关心的是相对误差(即偏差不超过一个数量级)。如果答案是 Java 的实现会产生太多错误,你有什么好的库推荐吗(但我希望这不应该是必需的)?谢谢。