BigDecimal的简单应用方式
初次了解BigDecimal的用法,因为在项目中应用到,所以在此处记录一些用法,便于后期的复习浏览。
也希望能给所用之人一些方便。
package com.tl.utils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
/**
-
@ClassName BigDecimalUtil
-
@Description TooD
-
@Author Tian Lu
-
@Date 2021/2/22 9:40
-
@Version 1.0
*/
public class BigDecimalUtil {
public static final int MONEY_POINT = 2; // 货币保留两位小数/**
- 格式化精度
- @param v
- @param point 小数位数
- @return double
*/
public static Double format(double v, int point) {
BigDecimal b = BigDecimal.valueOf(v);
return b.setScale(point, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
- @param v
- @param point
- @return
*/
public static Double formatRoundUp(double v, int point) {
NumberFormat nf = NumberFormat.getInstance();
nf.setRoundingMode(RoundingMode.HALF_UP);//设置四舍五入
nf.setMinimumFractionDigits(point);//设置最小保留几位小数
nf.setMaximumFractionDigits(point);//设置最大保留几位小数
return Double.valueOf(nf.format(v));
}
/**
- 格式化金额。带千位符
- @param v
- @return
*/
public static String moneyFormat(Double v) {
DecimalFormat formater = new DecimalFormat();
formater.setMaximumFractionDigits(2);
formater.setGroupingSize(3);
formater.setRoundingMode(RoundingMode.FLOOR);
return formater.format(v.doubleValue());
}
/**
- 带小数的显示小数。不带小数的显示整数
- @param d
- @return
*/
public static String doubleTrans(Double d) {
if (Math.round(d) - d == 0) {
return String.valueOf((long) d.doubleValue());
}
return String.valueOf(d);
}
/**
- BigDecimal 相加
- @param v1
- @param v2
- @return double
*/
public static Double add(double v1, double v2) {
BigDecimal n1 = BigDecimal.valueOf(v1);
BigDecimal n2 = BigDecimal.valueOf(v2);
return n1.add(n2).doubleValue();
}
/**
- BigDecimal 相减
- @param v1
- @param v2
- @return double
*/
public static Double subtract(double v1, double v2) {
BigDecimal n1 = BigDecimal.valueOf(v1);
BigDecimal n2 = BigDecimal.valueOf(v2);
return n1.subtract(n2).doubleValue();
}
/**
- BigDecimal 相乘
- @param v1
- @param v2
- @return double
*/
public static Double multiply(double v1, double v2) {
BigDecimal n1 = BigDecimal.valueOf(v1);
BigDecimal n2 = BigDecimal.valueOf(v2);
return n1.multiply(n2).doubleValue();
}
/**
- BigDecimal 相除
- @param v1
- @param v2
- @return double
*/
public static Double divide(double v1, double v2) {
BigDecimal n1 = BigDecimal.valueOf(v1);
BigDecimal n2 = BigDecimal.valueOf(v2);
return n1.divide(n2, 10, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
- 比较大小 -1:v1 < v2 1:v1 > v2 0:v1 = v2
- @param v1
- @param v2
- @return
*/
public static int compare(double v1, double v2) {
BigDecimal n1 = BigDecimal.valueOf(v1);
BigDecimal n2 = BigDecimal.valueOf(v2);
return n1.compareTo(n2);
}
}

浙公网安备 33010602011771号