使用BigDecimal对浮点数进行精确计算
2018-09-05 本文已影响16人
测试老杨
问题
Java的简单类型不能够精确的对浮点数进行运算。比如:
package day05;
public class YzcCalTest {
public static void main(String[] args) {
double a=1;
double b=0.9;
double c=a-b;
System.out.println(a+"-"+b+"="+c);
}
}
控制台截图
image.png
解决方案
使用JDK提供的BigDecimal对浮点数进行精确计算。
重构后的代码如下:
package day05;
import java.math.BigDecimal;
public class YzcCalTest {
public static void main(String[] args) {
double a=1;
double b=0.9;
BigDecimal a2 = new BigDecimal(a+"");
BigDecimal b2 = new BigDecimal(b+"");
BigDecimal c2 = a2.subtract(b2);
double c=c2.doubleValue();
System.out.println(a+"-"+b+"="+c);
}
}
控制台截图
image.png