BigDecimal解决丢失精度和科学计数法的问题
public class BigDecimalTest {
public static void main(String[] args) {
Double a = 10000000.22;
Double b = 10000000.00;
// 解决科学计数法问题
BigDecimal a1 = new BigDecimal(a.doubleValue());
BigDecimal b1 = new BigDecimal(b.doubleValue());
System.out.println(a1.toString() + ":" + b1.toString());
// 解决丢失精度问题
BigDecimal a2 = new BigDecimal(a.toString());
BigDecimal b2 = new BigDecimal(b.toString());
System.out.println(a2.toString() + ":" + b2.toString());
// 解决丢失精度问题
BigDecimal a3 = BigDecimal.valueOf(a);
BigDecimal b3 = BigDecimal.valueOf(b);
System.out.println(a3.toString() + ":" + b3.toString());
// 解决丢失精度和科学技术发问题
BigDecimal a4 = BigDecimal.valueOf(a);
BigDecimal b4 = BigDecimal.valueOf(b);
System.out.println(a4.toPlainString() + ":" + b4.toPlainString());
}
}
BigDecimal的String类型构造参数或valueOf()方法可以解决丢失精度的问题,然后用toPlainString()方法解决科学计数法的问题