java中的大数类

概述

java中的大数有两类,一个是存储整形的BigInteger,一个是存储浮点型的BigDecimal,它们本质上是由字符串构成的,因此可以存储任意长度的数据,但他们使用起来要比基本类型麻烦,并且速度肯定亚于基本数据类型。

特性

1.BigInteger和BigDecimal都可以使用静态方法valueOf()来进行对象的创建和初始化。

public class BigData {
    public static void main(String[] args){
        BigInteger integer = BigInteger.valueOf(1);
        BigDecimal decimal = BigDecimal.valueOf(0.1);
        System.out.println(integer);
        System.out.println(decimal);
    }
}

2.都可以使用new方法传递字符串型的数据构造相应对象。

public class BigData {
    public static void main(String[] args){
        BigInteger integer1 = new BigInteger("1");
        BigDecimal decimal1 = new BigDecimal("0.1");
        System.out.println(integer1);
        System.out.println(decimal1);
    }
}

3.BigInteger虽然有以long型为入参的构造方法,但它是私有构造方法的,不能直接使用。

4.BigDecimal支持以double为入参构造对象,但需要注意的是,虽然BigDecimal提供了以double类型为入参的构造方法,但请不要使用它,因为这可能会引起错误,其深层原因是很多浮点数不能精确地以二进制的形式表示,比如0.1,在转换时会导致精度丢失。

public class BigData {
    public static void main(String[] args){
        //BigInteger integer2 = new BigInteger(1);    //ERROR
        BigDecimal decimal2 = new BigDecimal(0.1);    //don't do it
        //System.out.println(integer2);
        System.out.println(decimal2);
        //输出为0.1000000000000000055511151231257827021181583404541015625
    }
}

5.java的大数提供了加减乘除等方法去代替常规的运算符,分别为add()、substract()、multiple()、divide(),以及compareTo()方法对两个大数进行比较,比较的入参必须是同类型的大数。

6.对于BigInteger,常用的方法还有:取余mod()、开平方sqrt()。

7.对于BigDecimal,常用的方法还有一个根据指定规则进行舍入的除法运算,比如说四舍五入即为BigDecimal.HALF_UP,常用的还有HALF_DOWN,CEILING、FLOOR。形式如下:

BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)

其中scale为精确到小数点后几位,这个参数也可以不使用。

经验总结

1.创建java大数类型时,不能直接使用new的方式并传入一个基本数据类型(包括包装类),而应传入字符串类型,你也可以使用包装类型的toString方法。

2.若要以基本数据类型创建大数对象,请使用静态方法valueOf()进行传递。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值