1. ホーム
  2. java

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

2022-03-04 13:03:02

質問

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

どうすればいいですか?

クラスのすべてのオブジェクトは BigDecimal はメソッド compareTo を使うと、別の BigDecimal と比較できます。の結果は compareTo は、次に比較されます > 0 , == 0 または < 0 を、必要なものに応じて選択します。ドキュメントを読めば、それがわかるでしょう。

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

のドキュメントより compareTo :

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

2つ BigDecimal 値が等しくても尺度が異なるオブジェクト(2.0など)は と2.00のように)、このメソッドでは等しいとみなされます。このメソッドは の6つのブール型メソッドよりも優先されます。 比較演算子(<, ==, >, >=, !=, <=)です。のイディオムを提案する。 これらの比較の実行は (x.compareTo(y) <op> 0) ここで <op> は6つの比較演算子のうちの1つである。

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