BigInteger和BigDecimal
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BigInteger和BigDecimal相关的知识,希望对你有一定的参考价值。
参考技术A 在Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,至于两个类的对象能表示最大范围不清楚,理论上能够表示无,无限大的数,只要计算机内存足够大。这两个类都在java.math.*包中,因此每次必须在开头处引用该包
BigInteger类型的数字范围较 Integer 类型的数字范围要大得多。我们都知道 Integer 是 Int 的包装类,int 的最大值为 231-1,如果要计算更大的数字,使用Integer 数据类型就无法实现了,所以 Java 中提供了BigInteger 类来处理更大的数字。 BigInteger 支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值而不会丢失任何信息
#基本操作
BigInteger的运算都没有对原值进行操作,而是返回一个新的BigInteger对象,1.valueOf(parament); 将参数转换为制定的类型
比如 int a=3;
BigInteger b=BigInteger.valueOf(a);//b=3
String s=”12345”;
BigInteger c=BigInteger.valueOf(s);//c=12345
2.add(); 大整数相加
BigInteger a=new BigInteger(“23”);
BigInteger b=new BigInteger(“34”);
a. add(b);//57
3.subtract(); 相减
4.multiply(); 相乘
5.divide(); 相除取整
6.remainder(); 取余
7.pow(); a.pow(b)=a^b
8.gcd(); 最大公约数
9.abs(); 绝对值
10.negate(); 取反数
11.mod(); a.mod(b)=a%b=a.remainder(b);
12.max(); min();
13.compareTo()两者比较
基本常量(3个):
A=BigInteger.ONE 1
B=BigInteger.TEN 10
C=BigInteger.ZERO 0
//键盘读入
Scanner cin=new Scanner(System.in);// 读入
BigInteger m=scanner.BigInteger();
#进制转换
//类型转换(返回类型如下)
在日常开发中我们经常会碰到小数计算,而小数直接计算的话会出现一些小小的错误,如下:
System.out.println(1.01 + 2.02);
理想输出3.03,实际上输出的是3.0300000000000002。这是因为不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度。有没有不失精度的办法呢?这里就要用到BigDecimal了。
java的float只能用来进行科学计算或工程计算,在大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算
基本方法如BigInteger,其他用法如下:
#使用BigDecimal实现四舍五入(支持float和double类型)
#保留有效数字
BigInteger和BigDecimal类详解
BigInteger和BigDecimal类详解
1. 介绍
- BigInteger适合保存比较大的整型
- BigDecimal适合保存精度更高的浮点型
2. 常见方法
- add
- subtract 减
- multiply
- divide
3. 注意
- 在编程时,需要处理很大的整数,long不够用时,可以使用BigInteger的类来搞定
- 在对BigInteger进行加减乘除的时候,需要使用对应的方法,不能直接进行+-*/
- 先常见一个BigInteger实例化对象然后进行操作
- 需要保存一个精度很高的数时,double不够用,可以使用BigDecimal
- 也要使用相应的方法进行相应计算
以上是关于BigInteger和BigDecimal的主要内容,如果未能解决你的问题,请参考以下文章
Java中的大数处理类BigInteger和BigDecimar浅析