BigDecimal()方法

如果我们要用Java来计算两个浮点数的和,因为浮点数在加和的时候可能会出现精度丢失的情况,比如下面这个代码:

public class text {
    public static void main(String[] args) {
        System.out.println(0.01+0.09);
    }
}

这个代码的本意是直接输出两个浮点数的和,照理说应该输出的结果是0.1,然而最终的编译结果是:0.09999999999999999;
你认为你看错了,但结果却是是这样的。问题在哪里呢?原因在于我们的计算机是二进制的。浮点数没有办法是用二进制进行精确表示。我们的CPU表示浮点数由两个部分组成:指数和尾数,这样的表示方法一般都会失去一定的精确度,有些浮点数运算也会产生一定的误差。
这就是浮点数加和的时候容易出现的精度丢失的情况,那么我们想要解决这个问题呢?这时候就用到了java.math包中的BigDecimal类,调用这个类中的方法可以结果精度丢失的问题。
同样的要加和0.01和0.09就可以使用以下的代码来代替:

public class deecimal {

    public static void main(String[] args) {
        BigDecimal bd1 = BigDecimal.valueOf(0.01);
        BigDecimal bd2 = BigDecimal.valueOf(0.09);
        BigDecimal bd = bd1.add(bd2);
        double d = bd.doubleValue();
        System.out.println(d);
    }

这个代码的最终结果就是0.1了。
在使用BigDecimal类来进行计算的时候,主要分为以下步骤:

      1、用float或者double变量构建BigDecimal对象。
      2、通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算
      3、把BigDecimal对象转换成floatdoubleint等类型。

一般来说,可以使用BigDecimal的构造方法或者静态方法的valueOf()方法把基本类型的变量构建成BigDecimal对象。
如上述的代码:

BigDecimal bd1 = BigDecimal.valueOf(0.01);
BigDecimal bd2 = BigDecimal.valueOf(0.09);

进行相应的计算后,我们可能需要将BigDecimal对象转换成相应的基本数据类型的变量,可以使用floatValue(),doubleValue()等将Bigdecimal对象转换为float或double的变量,如上述代码中的:

double d = bd.doubleValue();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值