zoukankan      html  css  js  c++  java
  • 在进行商业运算时解决BigDecimal的精度丢失问题

    System.out.println(0.05+0.01);
    System.out.println(1.0-0.42);
    System.out.println(4.015*100);
    System.out.println(123.3/100);

    在运行这段代码时就会发现一些列的问题,java并不像其他语言那样对货币的运算有特殊的处理,一切只能靠自己造轮子了

    public static BigDecimal add(double v1,double v2) {
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.add(b2);
    }
    public static BigDecimal sub(double v1,double v2) {
    BigDecimal b1 = new BigDecimal(Double.toString(v2));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.subtract(b2);
    }
    public static BigDecimal mul(double v1,double v2) {
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.multiply(b2);
    }
    public static BigDecimal div(double v1,double v2) {
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.divide(b2);
    }

  • 相关阅读:
    第8章 字符串
    第7章 方法
    第6章 类和对象
    第5章 数组
    第4章 循环结构、break与continue
    第3章 选择结构
    第2章 变量、数据类型和运算符
    Codeforces Round #426 (Div. 2)
    CCNA学前基础一
    Tinkoff Challenge
  • 原文地址:https://www.cnblogs.com/chenligeng/p/9952818.html
Copyright © 2011-2022 走看看