Java 大数字类BigDecimal类

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));

输出结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你好像很好吃a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值