Java常用类(5)--不可变的任意精度BigInteger、BigDecimal类

简介: Java常用类(5)--不可变的任意精度BigInteger、BigDecimal类

文章目录


BigInteger类

BigDecimal类


BigInteger类


Integer类作为int的包装类,能存储的最大整型值为2^31-1,Long类也是有限的,

最大为2^63-1。如果要表示再大的整数,不管是基本数据类型还是他们的包装类

都无能为力。


java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。


构造器:

BigInteger(String val):根据字符串构建BigInteger对象


常用方法:

①BigInteger abs():返回此 BigInteger 的绝对值的 BigInteger

②BigInteger add(BigInteger val):返回其值为 (this + val) 的 BigInteger

③BigInteger subtract(BigInteger val):返回其值为 (this - val) 的 BigInteger

④BigInteger multiply(BigInteger val):返回其值为 (this * val) 的 BigInteger

⑤BigInteger divide(BigInteger val):返回其值为 (this / val) 的 BigInteger,整数

相除只保留整数部分

⑥BigInteger remainder(BigInteger val):返回其值为 (this % val) 的 BigInteger

⑦BigInteger[] divideAndRemainder(BigInteger val):返回包含 (this / val) 后跟

(this % val) 的两个 BigInteger 的数组

⑧BigInteger pow(int exponent):返回其值为 (this^exponent) 的 BigInteger


BigDecimal类


一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,要求数字精度比较高,故用到java.math.BigDecimal类。BigDecimal类支持不可变的、任意精度的有符号十进制定点数。


构造器:

①public BigDecimal(double val)

②public BigDecimal(String val)


常用方法:

①BigDecimal add(BigDecimal augend)

②BigDecimal subtract(BigDecimal subtrahend)

③BigDecimal multiply(BigDecimal multiplicand)

④BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)


import java.math.BigDecimal;
import java.math.BigInteger;
public class BigDecimalTest {
    public static void main(String[] args) {
        BigInteger bi = new BigInteger("12433241333123");
        BigDecimal bd = new BigDecimal("1241135.351");
        BigDecimal bd2 = new BigDecimal("1335231");
        System.out.println(bi);
        System.out.println(bd.divide(bd2, BigDecimal.ROUND_HALF_UP));
        System.out.println(bd.divide(bd2, 15, BigDecimal.ROUND_HALF_UP));
    }
}


55b7bd75ba0d45209fe537d9a90f9222.png



相关文章
|
1月前
|
Java
【Java】Math、System、RunTime、BigDecimal类常用方法
【Java】Math、System、RunTime、BigDecimal类常用方法
|
2天前
|
Java
BigInteger和BigDecimal18
BigInteger和BigDecimal18
13 3
|
1月前
|
安全 Java
12 Java常用类(二)(String类+时间类+BigDecimal类等等)
12 Java常用类(二)(String类+时间类+BigDecimal类等等)
27 2
|
2月前
|
Java 测试技术 API
Java详解 : API常用类
Java详解 : API常用类
|
3月前
|
Java
深入了解Java中的BigDecimal类及其方法
深入了解Java中的BigDecimal类及其方法
|
3月前
|
安全 Java
java中BigDecimal详解
java中BigDecimal详解
|
4月前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
85 0
|
4月前
|
存储 Java
你知道Java中的BigInteger类和BigDecimal类吗?
你知道Java中的BigInteger类和BigDecimal类吗?
|
Java
Java开发篇- 从BigDecimal的divide的异常说起
在过去做项目的某一天中,突然有小伙伴说两个BigDecimal的数据相除(divide)报错了,觉得不可能,然后问他是怎么编写的,他说很简单呀,就是new了2个BigDecimal,然后相除的结果赋值给另外一个BigDecimal对象。听起来觉得没有问题,正常来说,2个Integer(int),2个Double(double)都不会报错,然后问是什么异常,说是一个很奇怪的异常
414 0
|
4月前
|
算法 Java API
java BigDecimal使用详细介绍
java BigDecimal使用详细介绍
java BigDecimal使用详细介绍