JavaでBigDecimalをDoubleに変換する方法は?


112

どのようにJava に変換BigDecimalDoubleますか?引数としてDoubleを使用する必要があるという要件がありますが、BigDecimalに変換する必要BigDecimalがありDoubleます。


10
いかがですかnew BigDecimal(2).doubleValue()
Matthias

6
質問する前に必ずドキュメントを読んでください。多くの場合、質問に対する回答が見つかります。を参照してくださいdoubleValue()。(ヒント:特定のクラスのドキュメントを見つけるには、単にクラス名をgoogleで検索し、続いてjavaを検索します。たとえば、このドキュメントを見つけるには、「BigDecimal Java」を検索しました)
Justin

1
「Doubleを引数として使用する必要があるという要件があります」要件を変更します。BigDecimalエンドツーエンドで使用しない限り、使用してもまったく意味がありません。この要件により、精度が低下します。規制へのコンプライアンスを侵害する可能性があります。そして、実行可能な過失を構成する可能性があります。
ローンの侯爵2013年

なぜ使用Doubleしていないのdoubleですか。できるフィールドnullですか?
Peter Lawrey 2013年

@EJPの使用doubleはそれほど悪くありませんが、15桁以上の表現精度を備えているため、ほとんどのプログラムで必要な精度を上回っていますが、BigDecimalを使用しても、バグや複雑さを追加する可能性が高いため、意味がない場合もあります。
Peter Lawrey、2013年

回答:


225

doubleValue()BigDecimalオブジェクトからdouble値を取得するには、メソッドを使用する必要があります。

BigDecimal bd; // the value you get
double d = bd.doubleValue(); // The double you want

こんにちは、私は同じ使用、しかし、問題は、私は、二重に小数を変換した後、同じ出力を得るにはどうすればよい...その1.355526185779E10をdoubleに変換するとき、私の小数出力は13555261857.79だったと異なるの両方ANSERあるさ
user13926345

@ user13926345-どちらも同じ値です。最初の出力は値の通常の表現であり、もう1つは科学的表現です。
SudoRahul

35

あなたは、変換することができますBigDecimaldouble使用します.doubleValue()。しかし、私を信じて、あなたが通貨操作をするならばそれを使わないでください。常にBigDecimalオブジェクトに対して直接実行する必要があります。これらの計算での精度の損失は、通貨関連の計算では大きな時間の問題です。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.