0

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

我的结果:
2.3450414545545569 404E16

MS excel 结果:
2.3450414545545569 4E16

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

我不明白为什么我的函数显示额外的值(404E16) 以及它如何被格式化以产生像(2.34504145455455694E16)这样的输出

4

4 回答 4

2

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

链接提供有关 的更多信息strictfp

于 2013-12-27T08:04:19.843 回答
1

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

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

于 2013-12-27T08:57:06.283 回答
0

您可以在忽略最后一位数字的情况下进行比较:

boolean equals = Math.abs(myResult - msExcelResult) < 1
于 2013-12-27T08:34:51.867 回答
0

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

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

于 2013-12-27T09:28:33.413 回答