zoukankan      html  css  js  c++  java
  • DOUBLE精度问题,BigDecimal

      BigDecimal bignum1 = new BigDecimal("10");
            BigDecimal bignum2 = new BigDecimal("5");
            BigDecimal bignum3 = null;
            
            //加法
            bignum3 =  bignum1.add(bignum2);     
            System.out.println("和 是:" + bignum3);
            
            //减法
            bignum3 = bignum1.subtract(bignum2);
            System.out.println("差  是:" + bignum3);
            
            //乘法
            bignum3 = bignum1.multiply(bignum2);
            System.out.println("积  是:" + bignum3);
            
            //除法
            bignum3 = bignum1.divide(bignum2);

    比较大小

    BigDecimal比较大小
       这个类是java里精确计算的类,下面说一下两个BigDecimal对象大小,相等的判断
       1 比较对象是否相等
         一般的对象用equals,但是BigDecimal比较特殊,举个例子:
         BigDecimal a=BigDecimal.valueOf(1.0);
         BigDecimal b=BigDecimal.valueOf(1.000);

         在现实中这两个数字是相等的,但是如果用
         a.equals(b)结果是false;怎么不相等了呢?因为equals是比较内容,“1.0”和“1.000”当然不一样了

         解决办法:
                if(a.compareTo(b)==0) 结果是true

        简单翻译:
               结果是
    -1 小于  
    0 等于
    1 大于

    异常

    用两个BigDecimal类型的数字做除法运算时,出现了一个如下的异常信息:

    1 java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result

      上网查了一下这个异常的,找到了原因所在:通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 
      解决的办法就是给divide方法设置精确的小数点,如:divide(xxxxx,2)。

  • 相关阅读:
    trueStudio笔记
    C笔记
    printf打印输出
    DB9针和DB25针串口的引脚定义
    通信单位
    简单工厂
    不同进程之间发送消息将指定界面置顶
    Delegate event 委托事件---两个From窗体使用委托事件
    Winfrom窗体无法关闭问题--检查是否存在重写
    自定义控件添加事件
  • 原文地址:https://www.cnblogs.com/KMException/p/7493923.html
Copyright © 2011-2022 走看看