Bigdecimal

 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 }

 bigdecimal的toString方法会在必要的时候采用科学计数法如0E7,需要原本字符串可用toPlainString

posted @ 2019-04-23 01:37  纵不朽  阅读(231)  评论(0编辑  收藏  举报