如何在java中将float转换为bigDecimal?
答案 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(双)。
答案 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的可能性较小