Java 大数字类BigDecimal类
程序员文章站
2024-03-14 19:58:29
...
BigInteger类和BigDecimal类都可以实现大数字的运算,不同的是BigDecimal加入小数计算,BigInteger类通常用来进行工程和科学计算,但是如果要进行商业的计算(股票等涉及金额精度的计算)我们就要用到BigDecimal类,BigDecimal类可以实现任意精度小数的计算,也就是说可以计算出小数点后任意一位的数字。
1、构造方法:
BigDecimal d = new BigDecimal("3.14");
BigDecimal d = new BigDecimal(3.14);
BigDecimal d = BigDecimal.valueOf(3.14);
2、常用方法:
- 加:add(BigDecimal val)
- 减:subtract(BigInteger val)
- 乘:multiply(BigInteger val)
- 除:divide(BigInteger val)
- 除:devide(BigInteger divisor,int scale,int roundingMode)
BigDecimal的常用方法和BigInteger大体相同,其中不同的就是BigDecimal的除法:divide提供了一个三个参数的方法:
其中第三个参数是近似值处理模式:
3、例子:我们来尝试一下这个divide这个方法:
public staic void main(String[] args){
BigInteger i1 = new BigInteger("30");
BigInteger i2 = new BigInteger("7");
System.out.println(i1.divide(i2));
}
我们通过上面的尝试最终结果报了一个异常,因为30除以7结果是一个无尽的小数,所以会报异常,那么我们怎么处理呢?
Sytem.out.println("22位小数\t\t"+i1.divide(i2,22,BigDecimal.ROUND_UP));
Sytem.out.println("最后一位进位\t"+i1.divide(i2,20,BigDecimal.ROUND_UP));
Sytem.out.println("忽略最后一位\t"+i1.divide(i2,20,BigDecimal.ROUND_DOWN));
Sytem.out.println("正值进位负值忽略\t"+i1.divide(i2,20,BigDecimal.ROUND_CEILING));
Sytem.out.println("正值忽略负值进位\t"+i1.divide(i2,20,BigDecimal.ROUND_FLOOR));
输出结果:
推荐阅读
-
Java 大数字类BigDecimal类
-
BigDecimal 类的使用介绍
-
Java基础:Java基本数据类型以及包装类
-
Java中BigDecimal类
-
#研究JAVAAPI系列--Number类+BigDecimal类#
-
php的aes加解密封装类(适应php7.2以上),可与java互解
-
通用的Java操作数据库工具类(原生JDBC,不使用DBUtils,c3p0等工具)
-
JAVA: 为什么要使用"抽象类"? 使用"抽象类"有什么好处? 博客分类: JAVAC#抽象类,语言 javac#编程基础类
-
java客户端HTTP请求工具类
-
JAVA: 为什么要使用"抽象类"? 使用"抽象类"有什么好处? 博客分类: JAVAC#抽象类,语言 javac#编程基础类