0

私はJavaを使用して数学関数を書いています。結果をms officeのExcel数式関数と比較しようとすると、両方の値が欠落しておりmy comparison(==)、二重値の場合に失敗します。

私の結果:
2.3450414545545569 404E16

MS Excel の結果:
2.3450414545545569 4E16

私はそれについていくつかの調査を行い、いくつかのリンクを見つけましたが、それは私の問題を解決せず、最終結果と一致しないため、ビッグデシマルを使用できません.

関数が余分な値(404E16)を表示する理由と、 (2.34504145455455694E16) のような出力を生成するようにフォーマットする方法を理解できませんでした。

4

4 に答える 4

1

BigDecimal がオプションでない場合、これは double 値を比較する良い方法です:

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 に答える