JavaでfloatからbigDecimalに変換するには?
_BigDecimal value = new BigDecimal(Float.toString(123.4f));
_
javadocs から、BigDecimal(double)
の予測不能性に悩まされないため、文字列コンストラクターはfloat
をBigDecimalに変換するための一般的な方法です。コンストラクタ。
ドキュメントからの引用:
注:floatおよびdouble NaNおよび±Infinity以外の値の場合、このコンストラクターはFloat.toString(float)およびDouble.toString(double)によって返される値と互換性があります。 これは、BigDecimal(double)コンストラクターの予測不可能性の影響を受けないため、一般的にfloatまたはdoubleをBigDecimalに変換するための好ましい方法です。
float f = 45.6f;
BigDecimal bd = BigDecimal.valueOf(f);
ドキュメントからの引用:
注:返される値はDouble.toString(double)を使用した結果からBigDecimalを構築した結果と等しいため、これは通常、double(またはfloat)をBigDecimalに変換する好ましい方法です。
リファレンス: BigDecimal(Java Platform SE 6)
小数点以下3桁の精度の場合:
BigDecimal value = new BigDecimal(f,
new MathContext(3, RoundingMode.HALF_EVEN));
これは私の知る限りです:
public static BigDecimal floatToBigDecimal(Float a){
if(a == null || a.isInfinite() || a.isNaN()){
return BigDecimal.ZERO;
}
try{
return BigDecimal.valueOf(a);
}catch(Exception e){
return BigDecimal.ZERO;
}
}
*注意:返される値は、Double.toString(double)を使用した結果からBigDecimalを構築した結果と等しいため、これは通常、double(またはfloat)をBigDecimalに変換する推奨方法です。
public static BigDecimal valueOf(double val)
パラメーター:
val-doubleをBigDecimalに変換します。
戻り値:
値がvalの値と等しいかほぼ等しいBigDecimal。
スロー:
NumberFormatException-valが無限またはNaNの場合。
以降:
1.5
私は、InfiniteまたはNot a Numberをチェックしたので、NumberFormatExceptionの可能性が低くなりました。