哪个更准确?java.lang.Math.E或Math.exp(1.0)
阅读Javadocs,我看到Math.E是“比自然对数的底E更接近的双值”。Math.E的打印值是2.718281828459045,而Math.exp(1.0)的值应该是相同的:2.7182818284590455(最后还有一个5) 从文档中可以看出,Math.E中的位似乎已被“手动调整”,以比Math.exp(1.0)生成的计算更接近E的实际值。这是正确的,还是我看错了文件哪个更准确?java.lang.Math.E或Math.exp(1.0),java,math,Java,Math,阅读Javadocs,我看到Math.E是“比自然对数的底E更接近的双值”。Math.E的打印值是2.718281828459045,而Math.exp(1.0)的值应该是相同的:2.7182818284590455(最后还有一个5) 从文档中可以看出,Math.E中的位似乎已被“手动调整”,以比Math.exp(1.0)生成的计算更接近E的实际值。这是正确的,还是我看错了文件 如果这是正确的,那么使用Math.pow(Math.E,n)比Math.exp(n)更准确还是更低?我已经在谷歌上搜索
如果这是正确的,那么使用Math.pow(Math.E,n)比Math.exp(n)更准确还是更低?我已经在谷歌上搜索过了,但是找不到关于这个问题的任何信息 小数点后16位的实际值为2.7182818284590452;2比5更接近于0,因此常数更接近 请注意,当使用任意一个数字进行浮点计算时,答案的浮点表示中的错误很可能会导致您主要使用哪一个 无关。数学.E 2.718281828459045 Math.exp(1.0) 2.7182818284590455 这是Wikipedia的值,我能看到的唯一区别是Math.exp(1.0)最后一位的舍入错误,其中的值是5而不是2。所以严格地说,数学E更精确,但除非你做了一些真正疯狂的事情,否则它的精确性并不重要
使用预先计算的Math.E而不是Math.exp(1.0)可能需要考虑速度。您可能也想检查一下。
Math.exp(n)
将更加精确。不要忘记,您处理的是IEEE754有限表示,因此需要“调整”。它们同样准确,一个比另一个更准确。看见