Sprig Boot # BigDecimal

    /**
     * x, y转成BigDecimal后相减
     * @param x x值(double类型)
     * @param y y值 (double类型)
     * @return result
     */
    public static double subtract(double x, double y) {
        BigDecimal d1 = BigDecimal.valueOf(x);
        BigDecimal d2 = BigDecimal.valueOf(y);
        return d1.subtract(d2).doubleValue();
    }
  • BIgDecimal.valueof(double) 这个方法没有提供准确转换,而是直接是用Double.toString(double)方法,然后使用BigDecimal(String)构造方法,所以这个方法可用。
  • BigDecimal(String) :这个一看就看出来了,直接就使用BigDecimal(String)构造方法了,这个是最好的。

总结:推荐使用BigDecimal.valueof(String) 和 BingDecimal(String) 这两个方法,不会出现精度的问题。

 

BigDecimal的初始化

BigDecimal提供了丰富的构造函数,可以通过int、long、double、String等来构造一个BigDecimal对象。
构造器描述

BigDecimal(int)       创建一个具有参数所指定整数值的对象。 
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。 
BigDecimal(long)    创建一个具有参数所指定长整数值的对象。 
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象

BigDecimal的加减乘除

  • add(BigDecimal) 加法
  • subtract(BigDecimal) 减法
  • multiply(BigDecimal) 乘法
  • divide(BigDecimal) 除法
  • toString() 将BigDecimal对象的数值转换成字符串。
  • doubleValue() 将BigDecimal对象中的值以双精度数返回。
  • floatValue() 将BigDecimal对象中的值以单精度数返回。
  • longValue() 将BigDecimal对象中的值以长整数返回。
  • intValue() 将BigDecimal对象中的值以整数返回
  • abs() 绝对值
//加法
BigDecimal result1 = num1.add(num2);
BigDecimal result12 = num12.add(num22);
//减法
BigDecimal result2 = num1.subtract(num2);
BigDecimal result22 = num12.subtract(num22);
//乘法
BigDecimal result3 = num1.multiply(num2);
BigDecimal result32 = num12.multiply(num22);
//除法
BigDecimal result5 = num2.divide(num1,20,BigDecimal.ROUND_HALF_UP);
BigDecimal result52 = num22.divide(num12,20,BigDecimal.ROUND_HALF_UP);
//绝对值
BigDecimal result4 = num3.abs();
BigDecimal result42 = num32.abs();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值