概述
首先看一个例子:
package BigDecimalDemo;
public class Demo {
public static void main(String[] args) {
double d1 = 0.05;
double d2 = 0.02;
System.out.println(d1 - d2);
}
}
输出结果为:
0.030000000000000002
这是由于float、double类型在进行计算时存在精度丢失问题,那如何解决呢?
package BigDecimalDemo;
import java.math.BigDecimal;
public class Demo {
public static void main(String[] args) {
double d1 = 0.05;
double d2 = 0.02;
BigDecimal bigDecimal1 = new BigDecimal(String.valueOf(d1));
BigDecimal bigDecimal2 = new BigDecimal(String.valueOf(d2));
System.out.println(bigDecimal1.subtract(bigDecimal2).doubleValue());
}
}
输出结果为:
0.03
但需要特别注意,一定要使用参数为string的构造函数,不然仍会有问题,如下:
package BigDecimalDemo;
import java.math.BigDecimal;
public class Demo {
public static void main(String[] args) {
double d1 = 0.05;
double d2 = 0.02;
BigDecimal bigDecimal1 = new BigDecimal(d1);
BigDecimal bigDecimal2 = new BigDecimal(d2);
System.out.println(bigDecimal1.subtract(bigDecimal2).doubleValue());
}
}
输出结果为:
0.030000000000000002
最后
以上就是忧伤手套为你收集整理的使用BigDecimal来解决float、double计算时的精度丢失问题的全部内容,希望文章能够帮你解决使用BigDecimal来解决float、double计算时的精度丢失问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复