大数操作——BigInteger、BigDecimal

今天又是收获的一天~~
关于学习大数操作来源于一道编程题:以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
当时我看到这道题第一反应就是把两个串通过nteger.valueOf()转为Integer然后想加,但事实并没有这么简单,不然怎末叫大数相加呢~

好了,来进入正题

我们知道在Java中,存储整行最大的范围就是long类型----64比特位,但是如果大于这个值又改怎末办?
同样的,对于浮点数double类型的精度只能达到16为,要是精度高于16位呢?

这里就引入了大数操作——BigInteger、BigDecimal;他们都在java.math包下,并且都是以字符串的形式存储的。

BigInteger

java.math.BigInteger就是用来表示任意大小的整数。BigInteger内部用一个 int[ ] 数组来模拟一个非常大的整数;
在这里插入图片描述
大数也可以转为基本类型,但是如果超出了基本类型的范围,转换时将丢失高位信息,即结果不一定是准确的。

BigInteger和Integer、Long一样,也是不可变类,并且也继承自Number类。因为Number定义了转换为基本类型的几个方法:

  • 转换为byte:byteValue()
  • 转换为short:shortValue()
  • 转换为int:intValue()
  • 转换为long:longValue()
  • 转换为float:floatValue()
  • 转换为double:doubleValue()

如果需要准确地转换成基本类型,可以使用intValueExact()、longValueExact()等方法,在转换时如果超出范围,将直接抛出ArithmeticException异常。

代码:

BigInteger i1 = new BigInteger<
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值