Java常用类整理4—java.math.BigInteger、java.math.BigDecimal

基于java11API和源码整理
说明:因为大数类用得比较少,就整理了一下基本的运算方法。

BigInteger、BigDecimal

首先理解什么大数?为什么需要大数?

大数是超过int、long、float和double等基本数据类型已经在精度范围的数,在金融行业货币等大数值比较常见。因为基本数据类型无法满足经度需求,因此java提供了BigInteger和BigDecimal两个大数类。

两个小数进行运算是存在误差的,例:
public class Demo {
    public static void main(String[] args) {
        double x = 0.1;
        double y = 0.2;
        System.out.println(x+y); //计算结果不是0.3,而是0.30000000000000004,是存在误差的
    }
}

BigInteger

java.math.BigInteger:不可变的任意精度整数

valueOf

BigInteger.valueOf(long a):返回一个BigInteger,值为a

源码:
public static BigInteger valueOf(long val) {
        // If -MAX_CONSTANT < val < MAX_CONSTANT, return stashed constant
        if (val == 0)
            return ZERO;
        if (val > 0 && val <= MAX_CONSTANT)
            return posConst[(int) val];
        else if (val < 0 && val >= -MAX_CONSTANT)
            return negConst[(int) -val];

        return new BigInteger(val);
    }
add

add(BigInteger val):返回(this+val)的BigInteger

subtract

subtract(BigInteger val):返回(this-val)的BigeInteger

multiply

multiply(BigInteger val):返回(this*val)的BigInteger

divide

divide(BigInteger val):返回(this/val)的BigInteger

BigDecimal

java.math.BigDecimal:不可变的任意精度的有符号十进制数。

valueOf

BigDecimal.valueOf(long a):返回一个BigDecimal,值为a

doubleValue

doubleValue():将BigDecimal转换为double

intValue

intValue():将BigDecimal转换为int

add

add(BigDecimal val):返回(this+val)的BigDecimal

subtract

subtract(BigDecimal val):返回(this-val)的BigDecimal

multiply

multiply(BigDecimal val):返回(this*val)的BigDecimal

divide

divide(BigDecimal val):返回(this/val)的BigDecimal

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值