| | |
| | | } |
| | | |
| | | /** |
| | | * 统一舍入到 6 位小数后转 Double(用于存库/展示,避免浮点尾差) |
| | | * 乘法:a * b,结果保留 6 位小数转 Double |
| | | */ |
| | | public static Double multiply(Double a, Double b) { |
| | | return toBigDecimal(a).multiply(toBigDecimal(b)).setScale(SCALE, ROUNDING).doubleValue(); |
| | | } |
| | | |
| | | /** |
| | | * 除法:a / b,结果保留 6 位小数转 Double(b=0 时返回 0) |
| | | */ |
| | | public static Double divide(Double a, Double b) { |
| | | if (b == null || toBigDecimal(b).compareTo(BigDecimal.ZERO) == 0) { |
| | | return 0.0; |
| | | } |
| | | return toBigDecimal(a).divide(toBigDecimal(b), SCALE, ROUNDING).doubleValue(); |
| | | } |
| | | |
| | | /** |
| | | * 统一舍入到 6 位小数后转 Double(用于存库/展示、入参校验,避免浮点尾差)。 |
| | | * 所有 Double 写入实体或参与比较前建议经此方法或 add/subtract 做精度控制。 |
| | | */ |
| | | public static Double roundToScale(Double v) { |
| | | if (v == null) { |