如何用正确的输出计算java中的双值?

如何用正确的输出计算java中的双值?,java,android,double,bigdecimal,mathematical-notation,Java,Android,Double,Bigdecimal,Mathematical Notation,我正在使用Java编写数学函数,当我尝试将结果和ms office excel公式函数进行比较时,两个值的准确性都丢失了,这使得我的比较(=)在出现双值时失败 我的结果: 2.3450414545545569404E16 MS excel结果: 2.34504145455455694E16 我做了一些研究,发现很少,但它不能解决我的问题,我不能使用大小数,因为它与我的最终结果不一致 我不明白为什么我的函数会显示额外的值(404E16),以及如何将其格式化以生成类似(2.3450414545545

我正在使用Java编写数学函数,当我尝试将结果和ms office excel公式函数进行比较时,两个值的准确性都丢失了,这使得
我的比较(=)
在出现双值时失败

我的结果:
2.3450414545545569404E16

MS excel结果:
2.34504145455455694E16

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


我不明白为什么我的函数会显示额外的值(404E16),以及如何将其格式化以生成类似(2.34504145455455694E16)

在方法中使用
strictfp
。这可能会解决精度问题


这提供了有关在方法中使用
strictfp
的更多信息。这可能会解决精度问题


这提供了有关在方法中使用
strictfp
的更多信息。这可能会解决精度问题


这提供了有关在方法中使用
strictfp
的更多信息。这可能会解决精度问题


这提供了有关
strictfp

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

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

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

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

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

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

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

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

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


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


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


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


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


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


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


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



那是Excel版的吗?谢谢,那还有StrictMath课程。谢谢@Octopus&Jurgen。我会查一下。那是Excel版的吗?谢谢,那还有StrictMath课程。谢谢@Octopus&Jurgen。我会查一下。那是Excel版的吗?谢谢,还有StrictMath课程。谢谢@Octopus&Jurgen。我会检查它。那是Excel中的吗?谢谢,还有StrictMath课程。谢谢@Octopus&Jurgen。我会检查它。谢谢@Codev。我试过了,效果很好,但另一个问题是我需要保持我的结果和Excel结果的一致性(也就是说,两者应该完全相同)。那么,有没有办法将我的结果(2.3450414545545569404E16)的格式设置为ms结果(2.34504145455455694E16)的格式,或者我需要遵循任何双值标准?谢谢@Codev,我尝试过了,效果不错,但另一个问题是我需要保持我的结果和excel结果之间的一致性(也就是说,两者应该完全相同)。那么,有没有办法将我的结果(2.3450414545545569404E16)的格式设置为ms结果(2.34504145455455694E16)的格式,或者我需要遵循任何双值标准?谢谢@Codev,我尝试过了,效果不错,但另一个问题是我需要保持我的结果和excel结果之间的一致性(也就是说,两者应该完全相同)。那么,有没有办法将我的结果(2.3450414545545569404E16)的格式设置为ms结果(2.34504145455455694E16)的格式,或者我需要遵循任何双值标准?谢谢@Codev,我尝试过了,效果不错,但另一个问题是我需要保持我的结果和excel结果之间的一致性(即两者应该完全相同)。那么有没有一种方法可以像ms结果(2.345041454554555569404e16)一样格式化我的结果(2.34504145455455694E16)或者我需要遵循双值标准吗?:但是有没有办法将我的结果准确地转换为ms结果?:但是有没有办法将我的结果准确地转换为ms结果?:但是有没有办法将我的结果准确地转换为ms结果?:但是有没有办法将我的结果准确地转换为ms结果?