java bigdecimalutils_Java BigDecimal工具类

importjava.math.BigDecimal;importjava.text.NumberFormat;/*** BigDecimal工具类

*@author尘世间迷茫的小书童

**/

public classBigDecimalUtils {//默认除法运算精度

private static final int DEF_DIV_SCALE = 2;//建立货币格式化引用

private static final NumberFormat currency =NumberFormat.getCurrencyInstance();//建立百分比格式化引用

private static final NumberFormat percent =NumberFormat.getPercentInstance();/*** 加法

*@paramnum

*@paramnum1

*@return

*/

public staticBigDecimal add(BigDecimal num, BigDecimal num1) {returnnum.add(num1);

}/*** 提供精确的加法运算(默认四舍五入,根据scale保留小数位数)

*@paramnum

*@paramnum1

*@paramscale

*@return

*/

public static BigDecimal add(BigDecimal num, BigDecimal num1, intscale) {returnnum.add(num1).setScale(scale, BigDecimal.ROUND_HALF_UP);

}/*** 提供精确的加法运算(默认四舍五入,根据scale保留小数位数)

*@paramadd

*@paramadd1

*@paramscale

*@return

*/

public static BigDecimal add(String add, String add1, intscale) {

BigDecimal num= newBigDecimal(add);

BigDecimal num1= newBigDecimal(add1);returnnum.add(num1).setScale(scale, BigDecimal.ROUND_HALF_UP);

}/*** 减法

*@paramnum

*@paramnum1

*@return

*/

public staticBigDecimal sub(BigDecimal num, BigDecimal num1) {returnnum.subtract(num1);

}/*** 提供精确的减法运算(默认四舍五入,根据scale保留小数位数)

*@paramnum

*@paramnum1

*@paramscale

*@return

*/

public static BigDecimal sub(BigDecimal num, BigDecimal num1, intscale) {returnnum.subtract(num1).setScale(scale, BigDecimal.ROUND_HALF_UP);

}/*** 提供精确的减法运算(默认四舍五入,根据scale保留小数位数)

*@paramminus

*@paramminus1

*@return

*/

public static BigDecimal sub(String minus, String minus1, intscale) {

BigDecimal num= newBigDecimal(minus);

BigDecimal num1= newBigDecimal(minus1);returnsub(num, num1, scale);

}/*** 乘法

*@paramnum

*@paramnum1

*@return

*/

public staticBigDecimal multiply(BigDecimal num, BigDecimal num1) {returnnum.multiply(num1);

}/*** 提供精确的乘法运算(默认四舍五入,保留小数位数根据scale决定)

*@paramnum

*@paramnum1

*@paramscale

*@return

*/

public static BigDecimal multiply(String num, String num1, intscale) {

BigDecimal mul= newBigDecimal(num);

BigDecimal mul1= newBigDecimal(num1);returnmultiply(mul, mul1, scale);

}/*** 提供精确的乘法运算(默认四舍五入,保留小数位数根据scale确定)

*@paramnum

*@paramnum1

*@paramscale

*@return

*/

public static BigDecimal multiply(BigDecimal num, BigDecimal num1, intscale) {returnnum.multiply(num1).setScale(scale, BigDecimal.ROUND_HALF_UP);

}/*** 除法(除法除不尽会抛异常)

*@paramnum

*@paramnum1

*@return

*/

public staticBigDecimal divide(BigDecimal num, BigDecimal num1) {returnnum.divide(num1, DEF_DIV_SCALE);

}/*** 提供精确的除法运算(默认四舍五入保留两位小数)

*@paramdividend

*@paramdivisor

*@return

*/

public static BigDecimal divide(BigDecimal dividend, BigDecimal divisor, intscale) {returndividend.divide(divisor, scale, BigDecimal.ROUND_HALF_UP);

}/*** 提供精确的除法运算(默认四舍五入,保留小数位数根据scale决定)

*@paramdividend

*@paramdivisor

*@paramscale

*@return

*/

public static BigDecimal divide(String dividend, String divisor, intscale) {

BigDecimal num= newBigDecimal(dividend);

BigDecimal num1= newBigDecimal(divisor);returndivide(num, num1, scale);

}/*** 提供精确的取余数运算(小数保留位数根据scale决定)

*@paramdividend

*@paramdivisor

*@paramscale

*@return

*/

public static BigDecimal balance(BigDecimal dividend, BigDecimal divisor, intscale) {returndividend.remainder(divisor).setScale(scale);

}/*** 提供精确的取余数运算(默认保留两位小数)

*@paramdividend

*@paramdivisor

*@paramscale

*@return

*/

public staticBigDecimal balance(BigDecimal dividend, BigDecimal divisor) {returndividend.remainder(divisor).setScale(DEF_DIV_SCALE);

}/*** 比较BigDecimal,相等返回0,num>num1返回1,num

*@paramnum

*@paramnum1

*@return

*/

public static intcompareTo(BigDecimal num, BigDecimal num1) {returnnum.compareTo(num1);

}/*** BigDecimal货币格式化

*@parammoney

*@return

*/

public staticString currencyFormat(BigDecimal money) {returncurrency.format(money);

}/*** BigDecimal百分比格式化

*@paramrate

*@return

*/

public staticString rateFormat(BigDecimal rate) {returnpercent.format(rate);

}public static voidmain(String[] args) {

BigDecimal divide= divide("12", "11", 2);

System.out.println(divide.doubleValue());

BigDecimal num1= new BigDecimal("121");

BigDecimal num2= new BigDecimal("122");

System.out.println(compareTo(num1, num2));

String currencyFormat=currencyFormat(num2);

System.out.println(currencyFormat);

String rateFormat=rateFormat(num2);

System.out.println(rateFormat);

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值