BigDecimalを使用して、2桁に丸められた2つの通貨の値を比較することを考えています。例えば、私は、0.02になるべきものと0.02の何かを比較しているので、以下のように0を返すと思います。しかし、それは-1をもたらす!これを行う正しい方法がありますか?JavaのBigDecimal
これは、123.45と123.4534のような大きな数値の場合にも有効です。「compareTo」を使用すると0になるはずです。
私は数学の文脈を使ってみましたが、それは優雅に見えません...正しい方法がありますか?
BigDecimal spread = new BigDecimal(0.01934);
spread.setScale(2, RoundingMode.HALF_EVEN);
System.out.format("0.0193 ? 0.02 = %d\n", spread.compareTo(new BigDecimal(0.02)));
、溶液は次のとおりです。
BigDecimal spread = new BigDecimal(0.01934).setScale(2, RoundingMode.HALF_EVEN);
BigDecimal loSpread = new BigDecimal(0.02).setScale(2, RoundingMode.HALF_EVEN);
System.out.format("0.0193 ? 0.02 = %d\n", spread.compareTo(loSpread));
それは、正確な浮動小数点数を得る別の方法です。 1+。 –
両方のアイディアをここに使って、正しく理解していなければならなかった。正しいコードを投稿します。 – fodon