关于BigDecimalUtil.mul()方法问题

来源:11-7 支付宝支付功能开发2

LilNn99

2019-10-11

老师好,助教好
我想请问2个问题
图片描述
第一个问题: 这里放进去的不是商品的单价吗? 怎么要乘以100呢?
第二个问题: 而且这里说要保留到分 也就是说 小数点后两位 我没看到保留的相关操作 我就去写了个测试 发现 只要用到mul的方法 直接乘出来就是小数点的后两位 我想问下 为什么没有做相关的操作 比如说保留小数点后两位 就像div的方法 设置了参数, 为什么直接结果直接就保留小数点后两位了呢?
图片描述

写回答

1回答

geelylucky

2019-10-11

  1. 因为支付宝的要求价格单位是“分”

  2. 注意看你用的是BigDecimalUtil这个工具类,这是咱们自己封装的。具体实现细节需要进工具类中查看,老师会在视频中带大家写的。

0
3
geelylucky
回复
LilNn99
看下面的源代码: public static BigDecimal mul(double a ,double b) { BigDecimal a1 = new BigDecimal(Double.toString(a)); BigDecimal b1 = new BigDecimal(Double.toString(b)); return a1.multiply(b1); } a1.multiply(b1): public BigDecimal multiply(BigDecimal multiplicand) { int productScale = checkScale((long) scale + multiplicand.scale); if (this.intCompact != INFLATED) { if ((multiplicand.intCompact != INFLATED)) { return multiply(this.intCompact, multiplicand.intCompact, productScale); } else { return multiply(this.intCompact, multiplicand.intVal, productScale); } } else { if ((multiplicand.intCompact != INFLATED)) { return multiply(multiplicand.intCompact, this.intVal, productScale); } else { return multiply(this.intVal, multiplicand.intVal, productScale); } } } 关键在于这个productScale,它决定了最终结果保留几位小数,默认是两位
2019-10-12
共3条回复

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9476 学习 · 8804 问题

查看课程