Java的Bigdecimal类

开发工具与关键技术: MyEclipse 10、Java语法
作者:邓婵
撰写时间:2019年 07月 02日

一般的float型和double型数据可以用来做科学计算,但由于在商业计算中要求数字精度比较高,所以我们通常采用Bigdecimal类来解决Java中浮点型的精度丢失问题,还有在一些需要高精度计算的问题,比如金融里面的钱的计算等。BigDecimal类提供了大量的构造器用于创建BigDecimal对象,包括把所有的基本数值型变量转换成一个BigDecimal对象,也包括利用数字字符串、数字字符数组来创建BigDecimal对象。

BigDecimal类常用的两个构造器:
在这里插入图片描述
下面我们看看该如何正确地转换浮点类型数据:
第一种:通过字符串来转换浮点类型数据

BigDecimal decimalT1 = new BigDecimal("0.05");
System.out.println("f1 = "+decimalT1);

第二种:通过valueOf来转换浮点类型数据

BigDecimal decimalT2 = BigDecimal.valueOf(0.01);
System.out.println("f2 = "+decimalT2);

第三种:通过构造器来转换浮点类型数据

BigDecimal decimalT3 = new BigDecimal(0.05);
System.out.println("f3 = "+decimalT3);

由此可见我们不推荐使用构造器来转换浮点型数据,因为它会导致精度损失,三种方法的输出结果如图下所示:
在这里插入图片描述
BigDecimal类运算: 加add,减subtract,乘multiply,除divide,乘方pow 如1^2

运算格式:加法: A.add(B),减:A.subtract(B),乘:A.multiply(B),除:A.divide(B),
乘方:A.pow(次方数)

BigDecimal类中常用方法:
在这里插入图片描述
下面我们看看该如何正确地计算浮点类型数据:
例1:使用double作为BigDecimal构造器参数,相关代码及运行结果如图下所示:
在这里插入图片描述
说明:这种写法不支持使用,因为它会导致精度损失,从而导致与正确的结果有偏差,还会有很多位小数,不适宜我们采取这样的写法。

例2:使用String作为BigDecimal构造器参数,相关代码及运行结果如图下所示:
在这里插入图片描述
说明:我们普遍采取这种写法,因为这种写法不会导致精度损失,同时输出的结果让人一目了然,更加精准。
总结:BigDecimal类主要是用来算钱,凡是有关钱的计算都不能用浮点型(double和float)来计算,要用BigDecimal来转换浮点型数据而BigDecimal中推荐使用BigDecimal.valueOf(double) 或者使用形参为字符串类型的构造器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值