如何用适当的输出计算java中的double值?

时间:2013-12-27 07:51:49

标签: java android double bigdecimal mathematical-notation

我正在使用Java编写数学函数,当我尝试将我的结果与ms office excel公式函数进行比较时,两个值的准确性使得my comparison(==)在双值的情况下失败。

我的结果:
2.3450414545545569的 404E16

MS excel结果:
2.3450414545545569的 4E16

我对它进行了一些研究,发现很少links,但它没有解决我的问题,我不能使用大小数,因为它与我的最终结果不一致。

我无法理解为什么我的函数会显示额外的值(404E16)以及如何将其格式化以产生输出,如(2.34504145455455694E16)

4 个答案:

答案 0 :(得分:2)

在您的方法中使用strictfp。这可能会解决准确性问题。

link提供了有关strictfp

的更多信息

答案 1 :(得分:1)

如果BigDecimal不是一个选项,这是比较双值的好方法:

https://stackoverflow.com/a/8081911/3115739

答案 2 :(得分:0)

您可以在忽略最后一位数字时进行比较:

boolean equals = Math.abs(myResult - msExcelResult) < 1

答案 3 :(得分:0)

如果问题只是格式化问题,您只需要使用适当的格式字符串来输出数字。相当具体的用途取决于您输出数字的具体方式,但DecimalFormat,格式字符串(System.out.format)等等都会对您有所帮助。

http://docs.oracle.com/javase/tutorial/java/data/numberformat.html