Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
哪个更准确?java.lang.Math.E或Math.exp(1.0)_Java_Math - Fatal编程技术网

哪个更准确?java.lang.Math.E或Math.exp(1.0)

哪个更准确?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)更准确还是更低?我已经在谷歌上搜索

阅读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)更准确还是更低?我已经在谷歌上搜索过了,但是找不到关于这个问题的任何信息

小数点后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有限表示,因此需要“调整”。它们同样准确,一个比另一个更准确。看见