美文网首页
商业计算--BigDecimal

商业计算--BigDecimal

作者: 木讷山人_a986 | 来源:发表于2018-04-14 00:06 被阅读0次

float和double类型主要是为了科学计算而设计的,它们并没有提供完全精确的结果,所以不应该被用于需要精确结果的场合。
对于此,在大多数的商业计算中,一般采用BigDecimal来进行精确计算。
BigDecimal的使用步骤如下:
1.初始化一个BigDecimal对象,两种方法都可行

BigDecimal bd1 = new BigDecimal(Double.toString(0.123));
BigDecimal bd2 = BigDecimal.valueOf(0.123);

2.具体运算方法如下:

public BigDecimal add(BigDecimal value);                        //加法
public BigDecimal subtract(BigDecimal value);                   //减法 
public BigDecimal multiply(BigDecimal value);                   //乘法
public BigDecimal divide(BigDecimal value);                     //除法

对于除法,要考虑除不尽的情况,因此需要指定保留小数位和取值策略的问题。
计算结束后,如果我们需要将BigDecimal对象转换成相应的基本数据类型的变量,可以使用floatValue(),doubleValue()等方法。
现在我们就来封装一个BigDecimal运算工具类,下次直接调用即可

public class BigDecimalUtil {

    private BigDecimalUtil(){

    }


    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(v1));
        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,2,BigDecimal.ROUND_HALF_UP);//四舍五入,保留2位小数

        //除不尽的情况
    }





}

相关文章

  • 商业计算--BigDecimal

    float和double类型主要是为了科学计算而设计的,它们并没有提供完全精确的结果,所以不应该被用于需要精确结果...

  • BigDecimal

    对于商业数字计算,一定要用BigDecimal的string构造器,一定要用BigDecimal的string构造...

  • 6.0商业计算BigDecimal使用

    一.关于钱数计算的

  • 商业计算工具——Bigdecimal详解

    前言 对于浮点数的四则运算,我们知道可能会出现精度上的误差,对于不需要准确计算精度的计算我们可以使用double和...

  • BigDecimal使用(整理)

    应用场景 大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算。比如:货币 使用 ...

  • 微信红包的随机算法是怎样实现的?

    先上代码: 以上代码仅供参考,涉及商业计算要用java.math.BigDecimal. 再说结论: 先抢后抢拿到...

  • 关于 BigDecimal

    商业计算一定要用BigDecimal 加减乘除都可 不能整除抛出异常 参数类型为double的构造方法的结果有一定...

  • BigDecimal 的对比

    最近在对比不同语言的BigDecimal的表现,以期选择一个最适合做商业计算的。 Groovy int和BigDe...

  • 安全漏洞:非法的BigDecimal造成系统崩溃

    原理 BigDecimal在JAVA中常用于金额的计算。BigDecimal表面上接收了科学计算法的参数然后进行了...

  • BigDecimal

    使用BigDecimal 做小数点精度计算 [BigDecimal.ROUND_UP]:全部进1;远离0的方向舍入...

网友评论

      本文标题:商业计算--BigDecimal

      本文链接:https://www.haomeiwen.com/subject/lklkkftx.html