mathcontext保留2位小数_java 商业中保留有效位数和小数位数

本文探讨了在Java中使用BigDecimal进行商业计算时,如何正确处理保留有效位数和小数位数的问题。作者指出保留有效位和小数位是互斥的,并提供了经过改进的方法,以确保在整数部分为0时保留有效位,否则保留小数位。
摘要由CSDN通过智能技术生成

环境

jdk:1.7

前言

之前,我曾写过一篇 java使用BigDecimal 处理商业精度及高精度详解,如何去获取有效位数;当时的我,没有弄清楚有效位和小数位数其实是互斥的!

导致在之后的工作业务中出现了问题;

今天特意记录下;

问题的主要因为是我没有弄清保留有效位和保留小数位是互斥的关系

在此之前,我想写出一个通用的方法,就是既能保留有效位,又能保留小数位;

/** * 相乘 保留是有效数字,而非有效的小数点 *@param v1 *@param v2 *@param scale *@author yutao *@return *@date 2016年11月14日下午2:52:33 */

public static BigDecimal validMuli(double v1, double v2, int scale){

if (scale < 0) {

throw new IllegalArgumentException("The scale must be a positive integer or zero");

}

BigDecimal b1 = new BigDecimal(String.valueOf(v1));

BigDecimal b2 = new BigDecimal(String.valueOf(v2));

MathContext mc = new MathContext(scale);

return b1.multiply(b2, mc);

}

/** * 除法 (保留的是有效数字,而非有效的小数点) *@param v1 *@param v2 *@param scale *@return *@author yutao *@date 2016年11月14日下午2:01:31 */

public static BigDecimal validDivi(double v1, double v2 , int scale){

if (scale < 0) {

throw new IllegalArgumentException("The scale must be a positive integer or zero");

}

BigDe

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值