概述
最近刷题遇到一些关于大数的题。原来一直用数组去做,最近才知道Java中封装了BigDecimal与BigInteger类,用来操作大数的,更加方便,功能更齐全。现在将其整理如下
BigInteger与BigDecimal
介绍
- BigInteger与BigDecimal是在封装在java.math包中的(注意与Java.lang.Math类的区别)。
- BigInteger是用来操作整数的。BigInteger 提供所有 Java的基本整数操作符的对应物,并提供 java.lang.Math的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD计算、质数测试、素数生成、位操作以及一些其他操作。
- BigDecimal是用来操作浮点数的。BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。toString() 方法提供 BigDecimal 的规范表示形式。
用法
因为BigInteger与BigDecimal两个类的方法比较相似,我就只用BigInteger来做举例。关于未提到的方法,请大家阅读Java API文档。
举例
import java.math.BigDecimal;
import java.math.BigInteger;
public class Demo {
public static void main(String[] args) {
BigInteger bi1 = new BigInteger("22222222222222222222222222222222222222");
BigInteger bi2 = new BigInteger("11111111111111111111111111111111111111");
System.out.println("加法:"+bi1.add(bi2));
System.out.println("减法:"+bi1.subtract(bi2));
System.out.println("乘法:"+bi1.multiply(bi2));
System.out.println("除法:"+bi1.divide(bi2));
BigInteger bi3 = new BigInteger("457889217565949786284022605");
BigInteger[] reminder = bi1.divideAndRemainder(bi3); //返回包含 (this / val) 后跟 (this % val) 的两个 BigInteger 的数组。
System.out.println(bi1 + "/" + bi3 + "=" + reminder[0] + "..." +reminder[1]);
//BigDecimal的初始化
BigDecimal bd1 = new BigDecimal(bi3,2); //bd1 = bi3/100;
BigDecimal bd2 = new BigDecimal("1594683486.489491878648941864");
System.out.println(bd1);
System.out.println(bd2);
}
}
BigInteger与BigDecimal实现原理
这里简单说说BigInteger与BigDecimal的原理,便于大家理解。
- BigInteger就是用int数组来实现保存任意精度的整数。
- BigDecimal就是BigInteger的原理,将小数扩大成整数,在用scale表示小数点的位置。十进制(BigInteger)+小数点位置(scale)来表示小数。比如:123.45就是BigInteger为12345,scale为2。
最后
以上就是健壮树叶为你收集整理的Java之BigInteger与BigDecimal的全部内容,希望文章能够帮你解决Java之BigInteger与BigDecimal所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复