概述
今天写代码过程中,发现一个Double的变量通过new BigDecimal(Double d)转换为BigDecimal时,有效数字改变了,如下:
public class BigDecimalTest {
public static void main(String[] arg) {
String s1 = "123.45";
Double d1 = new Double(s1); //使用String类型的形参构造BigDecimal
BigDecimal bg1 = new BigDecimal(d1); //使用Double类型的形参构造BigDecimal
BigDecimal bg2 = new BigDecimal(s1);
System.out.println("bg1 = "+bg1);
System.out.println("bg2 = "+bg2);
}
}输出:
bg1 = 123.4500000000000028421709430404007434844970703125
bg2 = 123.45
同样大小的Double数,以字符串形参的方式构造BigDecimal就能得到同样精度。而使用Double构造就会导致精度改变。事实上,按照官方API文档,推荐使用String形参的方式将float、double转换为BidDecimal,文档原文:For values other than float and double NaN and ±Infinity, this constructor is compatible with th
最后
以上就是老实马里奥为你收集整理的java double转decimal_Java中Double与BigDecimal的相互转换的全部内容,希望文章能够帮你解决java double转decimal_Java中Double与BigDecimal的相互转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复