重複の可能性:
2 つの汎用数値の値の比較
Numberの任意の 2 つのインスタンスを比較して、どちらが大きいかを調べたいと思います。ご存知のように、これらは Integer、Long、または Double の場合がありますが、BigInteger または BigDecimal の場合もあります。じゃあ何をすればいいの?
- Number はComparableを実装していません。
doubleValue()
BigDecimals または BigIntegers から精度が失われる可能性があるため、使用できません。
本当にインスタンスのテストとキャストに入る必要がありますか? これを行うライブラリが必要です。しかし、私はすでに Apache Commons と Guava をチェックしましたが、うまくいきませんでした。
編集 1:コメントはこれを指摘しました: Comparing the values of two generic Numbers。を使用してすべてを BigDecimal に変換するソリューションがありますtoString()
。これを行うより良い方法は本当にありませんか?
編集 2:他の質問への回答として自分のバージョンを投稿しました。受け入れられた回答よりも効率的で堅牢でなければなりません。