2 3 4 import java.math.BigDecimal; 5 6 import org.junit.Test; 7 8 public class BigdecimalTest { 9 /** 10 * 数据精度 11 * int类型数据溢出 12 * double类型小数点后面的精度问题 13 */ 14 @Test 15 public void testInt() { 16 int result = 1; 17 BigDecimal bd = new BigDecimal(result); 18 for (int i = 1; i <= 20; i++) { 19 BigDecimal bd1 = new BigDecimal(i); 20 bd = bd.multiply(bd1); 21 //result*=i; 22 } 23 //2432902008176640000 24 System.out.println(bd); 25 } 26 @Test 27 public void testDouble() { 28 double d1 = 0.1; 29 double d2 = 0.1; 30 double d3 = 0.1; 31 //使用BigDecimal将小数转为对象 一定要调用String类型的构造器 32 BigDecimal bd1 = new BigDecimal(d1+""); 33 BigDecimal bd2 = new BigDecimal(d2+""); 34 BigDecimal bd3 = new BigDecimal(d3+""); 35 //调用BigDecimal的方法相加 36 BigDecimal bd = bd1.add(bd2).add(bd3); 37 //将对象相加的结果转为double类型 38 double d = bd.doubleValue(); 39 System.out.println(d); 40 } 41 42 }