如何在java中从float转换为bigDecimal?

时间:2010-09-30 08:38:32

标签: java floating-point bigdecimal

如何在java中将float转换为bigDecimal?

4 个答案:

答案 0 :(得分:43)

BigDecimal value = new BigDecimal(Float.toString(123.4f));

javadocs开始,字符串构造函数通常是将float转换为BigDecimal的首选方法,因为它不会受到BigDecimal(double)构造函数的不可预测性的影响。

来自文档的引用:

  

注意:对于其他float和double NaN以及±Infinity的值,此构造函数与Float.toString(float)和Double.toString(double)返回的值兼容。 这通常是将float或double转换为BigDecimal 的首选方法,因为它不会受到BigDecimal(double)构造函数的不可预测性的影响。

答案 1 :(得分:20)

float f = 45.6f;
BigDecimal bd = BigDecimal.valueOf(f);

来自文件的引用:

  

注意:这通常是转换double(或者)的首选方法   浮动)到BigDecimal,因为返回的值等于   从使用结果构造BigDecimal得到的结果   Double.toString(双)。

参考:BigDecimal (Java Platform SE 6)

答案 2 :(得分:8)

小数点后3位数的精度:

BigDecimal value = new BigDecimal(f,
        new MathContext(3, RoundingMode.HALF_EVEN));

答案 3 :(得分:1)

据我所知:

   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(或float)转换为BigDecimal的首选方法,因为返回的值等于从使用Double.toString(double)的结果构造BigDecimal所产生的值。 / p>

public static BigDecimal valueOf(double val)

<强>参数
    val - double转换为BigDecimal 的返回
    一个BigDecimal,其值等于或大约等于val的值。
抛出:
     NumberFormatException - 如果val为无限或NaN 的时间:
    1.5

我已经检查了无限或不是数字,因此NumberFormatException的可能性较小