Java中的大数是什么?怎么用?

概念

极少数特殊情况下,我们会感觉整数和浮点数的精度都不能满足我们的要求,这个时候我们需要使用到两个特殊的类:BigInteger和BigDecimal。这两个类对数据的精度处理很强大,可以处理任意包含长度数字序列的数值。BigInteger可以实现任意精度的整数运算,BigDecimal可以实现任意精度的浮点数运算。

使用静态的valueOf方法可以将普通的数值转化为大数类型:

BigInteger a = BigInteger.valueOf(100);

对于一些相当大的数,可以使用一个带字符串参数的构造器:

BigInteger reallyBig = new BigInteger("1521951919974948521591498614658741974141641519614974168416516114914196419");;

大数类还有一些常量:

BigInteger.ZERO, BigInteger.ONE, BigInteger.TWO, BigInteger.TEN

注意:我们不能使用我们常用的运算符(如+和-)处理大数,而需要使用大数类中的add和multiply方法

BigInteger c = a.add(b); //c = a + bBigInteger d = c.multiply(b.add(BigInteger.valueOf(2))); //d = c * (b + 2)

BigIntegerAPI

BigInteger add(BigInteger other)BigInteger subtract(BigInteger other)BigInteger multiply(BigInteger other)BigInteger divide(BigInteger other)BigInteger mod(BigInteger other)//返回这个大整数和另一个大整数other的和,差,积,商以及余数BigInteger sqrt()//得到这个BigInteger的平方根int compareTo(BigInteger other)//如果这个大整数与另一个大整数other相等,返回0;如果这个大整数小于另一个大整数other,返回负数;否则,返回正数static BigInteger ValueOf(long x)//返回值等于x的大整数

BigDecimalAPI

BigDecimal add(BigDecimal other)BigDecimal subtract(BigDecimal other)BigDecimal multiply(BigDecimal other)BigDecimal divide(BigDecimal other)BigDecimal divide(BigDecimal other, RoundingMode mode)/*返回这个大实数与other的和,差,积。如果商是个无限循环小数,第一个divide方法会抛出一个异常。要得到一个舍入的结果,就要使用第二个方法。RoundingMode.HALF_UP是指四舍五入方式。*/int compareTo(BigDecimal other)//如果这个大实数与other相等,返回0;如果这个大实数小于other,返回附属;否则返回正数
static BigDecimal ValueOf(long x)static BigDecimal ValueOf(long x, int n)//返回值等于x或x/10ⁿ的一个大实数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值