解决浮点型商业运算中丢失精度的问题
2020-01-11 本文已影响0人
wbpailxt
先直接给出解决办法:使用入参为String的BigDecimal构造器。
先抛出问题现象:
package com.mmall.test;
import org.junit.Test;
import java.math.BigDecimal;
public class BigDecimalTest {
@Test
public void test1(){
System.out.println(0.05+0.01);
System.out.println(1.0-0.42);
System.out.println(4.015*100);
System.out.println(123.3/100);
}
@Test
public void test2(){
BigDecimal b1 = new BigDecimal(0.05);
BigDecimal b2 = new BigDecimal(0.01);
System.out.println(b1.add(b2));
}
}
图片.png
总是不能很好地计算出结果。
解决方案:
package com.mmall.test;
import org.junit.Test;
import java.math.BigDecimal;
public class BigDecimalTest {
@Test
public void test3(){
BigDecimal b1 = new BigDecimal("0.05");
BigDecimal b2 = new BigDecimal("0.01");
System.out.println(b1.add(b2));
}
}
图片.png