如何在java中将float转换为bigDecimal?
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) 构造函数的不可预测性的影响。
float f = 45.6f;
BigDecimal bd = BigDecimal.valueOf(f);
引用文档:
注意:这通常是转换双精度数(或 float) 转换为 BigDecimal,因为返回的值等于该值 从使用结果构造 BigDecimal 得到的结果 Double.toString(双).
小数点后 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(或 float)转换为 BigDecimal 的首选方法,因为返回的值等于使用 Double.toString(double) 的结果构造 BigDecimal 的结果。
公共静态 BigDecimal valueOf(double val)
参数:
val - double 转换为 BigDecimal。
退货:
一个 BigDecimal,其值等于或约等于 val 的值。
投掷:
NumberFormatException - 如果 val 为无限或 NaN。
自:
1.5
我已经检查了 Infinite 或 Not a Number,这样出现 NumberFormatException 的机会就更少了