2012-03-18 23 views
8

BigDecimalとintをJavaで比較する最も良い方法はどれですか?BigDecimalをintに変換するか、またはintをBigDecimalに変換しますか?BigDecimalとintをJavaで比較する

+0

BigDecimalをintに変換すると、その範囲を超える可能性があります。 –

答えて

9

あなたはBigDecimal値(すなわち-2 int値の範囲外2 -1)本当に大きなことを期待している場合、および/または小数点以下の桁数を格納する、または単にしたいですオーバーフロー/切り捨てエラーを避けるには、intBigDecimalに変換する必要があります。

パフォーマンスが非常に大きな問題(これはまれです)の場合は、かもしれません。は他の方が良いでしょう。

+1

私が知りたかったことはまさにそれです!ありがとう@peter! – HighBit

0

intをBigDecimalに変換しない理由の1つは、新しいオブジェクトを作成しているということです。したがって、ヒープに平等を実行するために実際にゴミを投げています。 また、基本的な等価性は、実際のBigIntegerオブジェクトのものよりも速くなります。

+0

これはなぜ "ヒープにゴミを投げて"いるのでしょうか? –

+0

しかし、これはオーバーフローする可能性があり、結果が間違っている可能性があります。 BigDecimal bd = maxint +1かつbdがintに変換された場合、結果は1 – nist

+0

となります。実際の使用ケースによって異なります。 @Oli比較のたびに、BigIntオブジェクト自体に既に格納されている実際のプリミティブ値を取るのではなく、新しいBigIntegerオブジェクトを作成します。これは必要でなく、ヒープ上に存在します – Bober02

2

intBigDecimalに変換するとします。

これは、常にBigDecimalをintに変換することができないためです。小数点以下の情報は失われ、BigDecimalの値はintの範囲外になる可能性があります。 BigDecimalとして

1

あなたは、彼らはとにかく、比較することができることを確認するBigDecimalintを変換する必要がありますintの範囲を拡張します。