java 14 -6 BigInteger和BigDecimal

BigInteger:可以让超过Integer范围内的数据进行运算

  构造方法:
    BigInteger(String val)

 1 import java.math.BigInteger;
 2 public class BigIntegerDemo {
 3 public static void main(String[] args) {
 4 // 这几个测试,是为了简单超过int范围内,Integer就不能再表示,所以就更谈不上计算了。
 5 // Integer i = new Integer(100);
 6 // System.out.println(i);
 7 // // System.out.println(Integer.MAX_VALUE);
 8 // Integer ii = new Integer("2147483647");
 9 // System.out.println(ii);
10 // // NumberFormatException 这个字符已经超出了int的范围
11 // Integer iii = new Integer("2147483648");
12 // System.out.println(iii);
13 
14 // 通过大整数来创建对象
15 BigInteger bi = new BigInteger("2147483648");
16 System.out.println("bi:" + bi);
17 }
18 }

  由于在运算的时候,float类型和double很容易丢失精度,演示案例。
    所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal

  BigDecimal类:不可变的、任意精度的有符号十进制数,可以解决数据丢失问题。
    构造方法:
    public BigDecimal(String val)

  1、public BigDecimal add(BigDecimal augend) 加
  2、public BigDecimal subtract(BigDecimal subtrahend) 减
  3、public BigDecimal multiply(BigDecimal multiplicand) 乘
  4、public BigDecimal divide(BigDecimal divisor) 除
  5、public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):商,几位小数,如何舍取
      divisor - 此 BigDecimal 要除以的值。
      scale - 要返回的 BigDecimal 商的标度。
      roundingMode - 要应用的舍入模式。
    经常用ROUND_HALF_UP,向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式

 

 1 import java.math.BigDecimal;
 2 public class BigDecimalDemo {
 3 public static void main(String[] args) {
 4 //在运算的时候,float类型和double很容易丢失精度,演示案例。
 5 // System.out.println(0.09 + 0.01); 0.09999999999999999
 6 // System.out.println(1.0 - 0.32); 0.6799999999999999
 7 // System.out.println(1.015 * 100); 101.49999999999999
 8 // System.out.println(1.301 / 100); 0.013009999999999999
 9 
10 //为了能精确的表示、计算浮点数,Java提供了BigDecimal
11 BigDecimal bd1 = new BigDecimal("0.09");
12 BigDecimal bd2 = new BigDecimal("0.01");
13 System.out.println("add:" + bd1.add(bd2));
14 System.out.println("-------------------");
15 
16 BigDecimal bd3 = new BigDecimal("1.0");
17 BigDecimal bd4 = new BigDecimal("0.32");
18 System.out.println("subtract:" + bd3.subtract(bd4));
19 System.out.println("-------------------");
20 
21 BigDecimal bd5 = new BigDecimal("1.015");
22 BigDecimal bd6 = new BigDecimal("100");
23 System.out.println("multiply:" + bd5.multiply(bd6));
24 System.out.println("-------------------");
25 
26 BigDecimal bd7 = new BigDecimal("1.301");
27 BigDecimal bd8 = new BigDecimal("100");
28 System.out.println("divide:" + bd7.divide(bd8));//divide:0.01301
29 System.out.println("divide:"
30 + bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP));//divide:0.013
31 System.out.println("divide:"
32 + bd7.divide(bd8, 8, BigDecimal.ROUND_HALF_UP)); //divide:0.01301000
33 }
34 }

 

posted @ 2016-09-19 20:18  卡拉瓦  阅读(257)  评论(0编辑  收藏  举报