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

  • 相关阅读:
    再谈Dilworth定理
    区间动态规划
    单调队列优化动态规划
    暑假集训考试R2 konomi 慕
    NOIP 2000 计算器的改良
    2007 Simulation message
    COCI 2003 LIFTOVI 电梯 SPFA
    NOIP 2003 数字游戏
    USACO 2014 DEC Guard Mark 状态压缩
    使用HttpClient发送GET请求
  • 原文地址:https://www.cnblogs.com/chenligeng/p/9952818.html
Copyright © 2011-2022 走看看