如何从float转换为java的bigDecimal?如何在Java中将float转换为bigDecimal?
回答
new BigDecimal(myfloat)
使用float
构造:
float f = 10.0f;
BigDecimal b = new BigDecimal(f);
没有浮点构造函数,这是自动转换为双精度,并且双精度构造函数不安全 – Alex 2012-11-08 16:35:42
BigDecimal value = new BigDecimal(Float.toString(123.4f));
从javadocs,字符串构造一般是一个float
转换成一个BigDecimal的首选方法,因为它不会从遭受BigDecimal(double)
构造函数的不可预测性。从文档
引用:
注意:对于值其他浮点和双精度的NaN和±无穷远,此构造是通过Float.toString(浮点)和Double.toString返回的值兼容(双)。 这通常是将float或double转换为BigDecimal的首选方式,因为它不会受到BigDecimal(double)构造函数的不可预测性的影响。
但是明确地将“float”转换为String并不能帮助您自动解决不可预测性问题 - 您需要注意正确格式化值(四舍五入) TC)。 – Jesper 2010-09-30 08:58:08
对于3位的小数点后的精度:
BigDecimal value = new BigDecimal(f,
new MathContext(3, RoundingMode.HALF_EVEN));
float f = 45.6f;
BigDecimal bd = BigDecimal.valueOf(f);
引用从单证:
注意:这通常是转换双倍的优选方式(或 浮点数)转换为BigDecimal,因为返回的值等于从构造产生的 从使用 Double.toString(double)的结果中得到一个BigDecimal。
'Double.toString(float)'产生与'Float.toString(float)'不同的结果。 – 2017-01-24 13:12:14
这是高达我的知识:
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;
}
}
*注:这通常是转换一个双(或浮动)转换为BigDecimal,作为首选方式返回的值等于从使用Double.toString(double)的结果构造BigDecimal所产生的值。
公共静态的BigDecimal的valueOf(double val)将
参数:
VAL - 双转换为一个BigDecimal。
返回:
一个BigDecimal,其值等于或近似等于val的值。
抛出:
NumberFormatException的 - 如果val为无穷大或NaN。
由于:
1.5
我已经检查是否无限大,不是一个数字,所以有NumberFormatException异常的机会少
- 1. java - 如何将Float转换为BigDecimal?
- 2. 将NSData转换为Java float?
- 3. 在Java中将float转换为时间?
- 4. Java将Arraylist <Float>转换为float []
- 5. 将BigDecimal转换为整数
- 6. 将python转换为java float vs double
- 7. 将org.bytedeco.javacpp.Mat转换为Java int/float数组
- 8. 如何将Oracle的NUMERIC字节表示转换为java BigDecimal?
- 9. 如何将int转换为float?
- 10. 如何将userdata转换为uint32或float?
- 11. 在android中将float转换为CharSequence?
- 12. 在C++中将float转换为std :: string
- 13. 在Julia Lang中将float转换为int
- 14. 在F#中将float转换为int#
- 15. 在uint32_t计算中转换为float float
- 16. 将float转换为char *
- 17. 将double转换为float?
- 18. 将Mat转换为** float
- 19. 将float(YYYY)转换为datetime
- 20. 将double [] []转换为float [] []
- 21. mysql将float转换为double
- 22. 转换为float
- 23. 如何把BigInteger转换为BigDecimal?
- 24. 无法为BigDecimal转换为字符串在java中
- 25. 如何在Swift中将RealmOptional转换为Int或Float?
- 26. 如何将void *转换为float(*)[3]在C++中?
- 27. 如何在Python中将float 50.0转换为int 50?
- 28. 如何在c#中将float []转换为obect []?
- 29. 如何使用Jasper Reports中的查询将BigDecimal转换为Double
- 30. 为什么我在将'float **'转换为'const float **'时出错?
没有浮动的构造,这是自动强制转换为双,和双构造函数是不安全的 – Alex 2012-11-08 16:36:22