1.BigInteger
BigInteger类型的数字要比Integer类型的数字范围大得多,并且支持任意精度的整数,在运算中,BigInteger类型可以准确地表示任何大小的整数值而不会丢失任何信息。 该类中除了基本的加减乘除,还提供了绝对值,相反数,最大公约数以及判断是否为质数。 BigInteger类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。语法如下:
代码语言:javascript复制public BigInteger(String val)
其中,val是十进制字符串。 如果想要将10装换为BigInteger类型,可以进行以下操作:
代码语言:javascript复制BigInteger a=new BigInteger("10");
一旦创建了对象实例,就可以调用BigInteger类中的一些方法进行运算操作,下面列出常用方法:
方法 | 解释 |
---|---|
public BigInteger add(BigInteger val) | 加法 |
public BigInteger subtract(BigInteger val) | 减法 |
public BigInteger multiply(BigInteger val) | 乘法 |
public BigInteger divide(BigInteger val) | 除法 |
public BigInteger remainder(BigInteger val) | 取余 |
public BigInteger[] divideAndRamainder(BigInteger val) | 用数组返回余数和商,结果数组中第一个值为商,第二个值为余数 |
public BigInteger pow(int exponent) | 进行取参数的expinent次方操作 |
public BigInteger negate() | 取相反数 |
public BigInteger shiftLeft(int n) | 将数字左移n位,如果n位负数,做右移操作 |
public BigInteger shiftRight(int n) | 将数字右移n位,如果n位负数,做左移操作 |
public BigInteger and(BigInteger val) | 做与操作 |
public BigInteger or(BigInteger val) | 做或操作 |
public int compareTo(BigInteger val) | 做数字比较操作 |
public boolean equals(Object x) | 当参数x是BigInteger类型的数字并且数值相等时,返回true |
public BigInteger main(BigInteger val) | 返回较小的数值 |
public BigInteger max(BigInteger val) | 返回较大的数值 |
2.BigDecimal
相对于BigInteger,BigDecimal加入了小数的概念,该类支持任意精度的定点数。 BigDecimal类常用的两个构造方法:
代码语言:javascript复制public BigDecimal(double val);
//实例化时将双精度类型转换位BigDecimal类型
public BigDecimal(String val);
//实例化时将字符串类型转换为BigDecimal类型
BigDecimal类型的数字可以用来做超大的浮点数的运算:
方法 | 解释 |
---|---|
public BigDeciaml add(BigDeciaml augend) | 加法 |
public BigDeciaml subtract(BigDeciaml augend) | 减法 |
public BigDeciaml multiply(BigDeciaml augend) | 乘法 |
public BigDeciaml divide(BigDeciaml divisor,int scale,int roundingMode) | 除法,三个参数分别为输出,商的小数点后的位数,近似处理模式 |
相对于加减乘除来说,除法是其中最复杂了,很大情况下是除不尽的,所以,针对除法,divide()有多种设置,用于返回商末位小数点的处理,如下表:
模式 | 含义 |
---|---|
BigDeciaml.ROUND_UP | 商的最后一位如果大于0,则向前进位,正负数都如此 |
BigDeciaml.ROUND_DOWN | 商的最后一位无论是什么数字都省略 |
BigDeciaml.ROUND_CEILING | 商如果是整数,按照ROUND_UP模式处理,如果是负数,按照ROUND_DOWN模式处理,这种模式的处理都会使近似值大于实际值 |
BigDeciaml.ROUND_FLOOR | 与ROUND_CEILING模式i相反,商如果使正数,按照ROUND_DOWN模式处理,商如果是负数,按照ROUND_UP模式处理,这种模式的处理会使近似值小于实际值 |
BigDeciaml.ROUND_HALF_DOWN | 对商进行四舍五入,如果商最后一位小于等于5,则做舍弃操作,如果最后一位大于5,则做进位操作 |
BigDeciaml.ROUND_HALF_UP | 对商进行四舍五入操作,如果商的最后一位小于5则色情,如果大于等于5,则进位操作 |
BigDeciaml.ROUND_HALF_EVEN | 如果商的倒数第二位为奇数,则按照ROUND_HALF_UP处理,如果是偶数,则按照ROUND_HALF_DOWN处理 |
若有错误,欢迎指正批评,欢迎讨论。 每文一句:我知道我不是一个很好的记录者,但我比任何人都喜欢回首自己来时的路,我不住的回首,伫足,然而时光仍下我轰轰烈烈的向前奔去。