Java-BigInteger和BigDecimal

Java-BigInteger和BigDecimal

概述

BigInteger

在Java中,有许多数字处理的类,由CPU原生提供的整形最大范围是64位long型整数。使用long型整数可以直接通过CPU指令进行 计算,速度很快。还有Integer类,但是这些类都有一定的局限性。

我们都知道 Integer 是 int 的包装类,int 的最大值为 2^31-1。若希望描述更大的整数数据时,使用Integer 数据类型就无法实现了,所以Java中提供了BigInteger 类。Java.math.BigInteger就是用来表示任意大小的整数。BigInteger内部用一个int[]数组来模拟一个非常大的整数。

使用
  • 对BigInteger做运算时,只能使用实例化方法

  • 和lang型整数运算相比,BigInteger不会由有范围限制,但缺点是速度比较慢

  • 使用longValueExact()方法时,如果超出了long型的范围,会抛出ArithmeticException

代码演示
public class BigIntegerDemo {
    public static void main(String[] args) {
        BigInteger b = new BigInteger("111111111111111111111111111111");
        BigInteger b1 = new BigInteger("22222");
        BigInteger b2 = b.add(b1);

        System.out.println(b);
        System.out.println(b1);
        System.out.println(b2);
    }

BigDecimal

概述

在计算机中不论是float还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精度。其根本原因是:十进制通常没有完全的二进制表示形式;十进制数的二进制表示形式可能不精确,只能无限接近那个值。

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。

构造方法:BigDecimal(String val)

基本运算方法

add(), subtract(), multiply(), divide()

代码演示
public class BigDecimalDemo {
    public static void main(String[] args) {
        System.out.println(12-11.9);
        //如果直接相减则不能得到其精确值

        BigDecimal b = new BigDecimal("12");
        BigDecimal b1 = new BigDecimal("11.9");
        //而这样则可以
        BigDecimal b2 = b.subtract(b1);
        System.out.println(b2);

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值