1. ホーム
  2. java

[解決済み] BigDecimal で比較演算子 >, =, < を使用するには?

2022-06-10 18:16:40

質問

BigDecimalデータ型にunitPriceを設定したドメインクラスを持っています。現在、価格を比較するメソッドを作成しようとしていますが、BigDecimalデータ型では比較演算子を持つことができないようです。データ型を変更しなければならないのでしょうか、それとも他の方法があるのでしょうか?

どのように解決するのですか?

クラスのすべてのオブジェクト BigDecimal はメソッド compareTo を使って別のBigDecimalと比較することができます。の結果は compareTo の結果は、次に比較されます。 > 0 , == 0 または < 0 を使うことができます。ドキュメントを読めばわかると思います。

演算子 == , < , > のようなプリミティブなデータ型にのみ使用することができます。 int , long , double のようなラッパークラス、あるいは IntegerDouble .

のドキュメントから compareTo :

比較する BigDecimal と指定された BigDecimal .

BigDecimal のような、値が等しいが目盛りが異なる2つのオブジェクトは、この方法では等しいとみなされます。 と2.00のように)、このメソッドでは等しいとみなされます。このメソッドは このメソッドは、6 つのブール演算子 比較演算子(<, ==, >, >=, !=, <=)の個々のメソッドよりも優先して提供されています。これらの比較を行うために推奨されるイディオムは これらの比較を行うために推奨されるイディオムは (x.compareTo(y) <op> 0) ここで <op> は6つの比較演算子のうちの1つである。

を返します。 このBigDecimalが数値的にvalより小さい、等しい、または大きいので-1、0、または1。