Java笔记

来源:互联网 发布:电信运营商的网络架构 编辑:程序博客网 时间:2024/05/19 17:47

BigInteger

用来处理大数据

public void test(){    long sum = 1;    for(int i = 1; i <= 21; i++){        sum *= i;    }    System.out.println(sum);}

输出结果:-4249290049419214848
因为已经超出了long允许的范围
这种情况就要使用BigInteger,他是java.math包下的一个类

public void test(){    BigInteger sum = BigInteger.valueOf(1);    for(int i = 1; i<=21; i++){        BigInteger bi = BigInteger.valueOf(i);        sum = sum.multiply(bi);    }    System.out.println(sum);}

输出结果:51090942171709440000

BigDecimal

处理二进制运算导致的误差

public void test(){    System.out.println(2.0 - 1.1);}

输出结果:0.8999999999999999

如果要解决这种问题,就要用到BigDecimal类,它是java.math 包下的一个类

public void test(){    BigDecimal b1 = new BigDecimal("2.0");//创建BigDecimal对象时,必须使用String构造器    BigDecimal b2 = new BigDecimal("1.1");    BigDecimal b3 = b1.subtract(b2);    System.out.println(b3);}

输出结果:0.9

原创粉丝点击