私は最近 1 つのアルゴリズムに取り組んでいましたが、たとえば 2 つの Java BigDecimals があり、それらの値が -1.9997 と -1.9989 であるという点でつまずきました。BigDecimal の compareTo メソッドは -1.9989 が -1.9997 より大きいと見なします。等しいと見なされますが、たとえば -1.9 と -1.86 がある場合、それらは異なると見なされます。Javaでそれを行う方法はありますか?
1796 次
2 に答える
4
値の差を取り、それがしきい値/エラーよりも小さいことを確認します。
double x = -1.9997;
double y = -1.9989;
if(Math.abs(x - y) < 1e-3) // almost the same
個人的には、double
15 桁以上の精度が必要でない限り使用します。
于 2012-04-17T07:02:48.807 に答える
3
次に、それらを比較する前に数値を四捨五入する必要があります。デフォルトの比較は非常に合理的です。
BigDecimal price = x.scale(2, RoundingMode.HALF_UP);
このコードは、小数点以下 2 桁に丸められます。
于 2012-04-17T07:01:05.127 に答える