关于BigDecimal的计算

xiaoxiao2021-02-27  317

package main; import java.math.BigDecimal; /** */ public class BigDecimalUtil { /** * 加法<br/> */ public static Double add(Double... d) { BigDecimal result = BigDecimal.ZERO; if (d != null) { for (Double dd : d) { if (dd != null) { result = result.add(parseDouble(dd)); } } } return formatReturnDouble2(result); } /** * 减<br/> */ public static Double subtract(Double... d) { BigDecimal result = BigDecimal.ZERO; boolean first = true; if (d != null) { for (Double dd : d) { if (dd != null) { if (first) { first = false; result = parseDouble(dd); } else { result = result.subtract(parseDouble(dd)); } } } } return formatReturnDouble2(result); } /** * 乘法<br/> */ public static Double multiply(Double... d) { return multiplyReturnBigDecimal(d).doubleValue(); } /** * 乘法,返回BigDecimal<br/> */ public static BigDecimal multiplyReturnBigDecimal(Double... d) { BigDecimal result = BigDecimal.ONE; if (d != null) { for (Double dd : d) { if (dd != null) { result = result.multiply(parseDouble(dd)); } } } else { result = BigDecimal.ZERO; } return result; } /** * 除法,参数BigDecimal<br/> */ public static Double divide(BigDecimal b, Double d) { return divideBigDecimalReturnBigDecimal(b, d).doubleValue(); } /** * 除法,参数BigDecimal<br/> */ public static BigDecimal divideBigDecimalReturnBigDecimal(BigDecimal b, Double d) { if (d == null || d == 0d) { return BigDecimal.ZERO; } if (b == null) { return BigDecimal.ZERO; } return b.divide(parseDouble(d), 2, BigDecimal.ROUND_DOWN); } /** * 除<br/> */ public static Double divide(Double... d) { BigDecimal result = BigDecimal.ZERO; boolean first = true; if (d != null) { for (Double dd : d) { if (dd != null) { if (first) { first = false; result = parseDouble(dd); } else { if (dd != 0d) { result = result.divide(parseDouble(dd), 2, BigDecimal.ROUND_DOWN); } else { result = BigDecimal.ZERO; } } } } } return result.doubleValue(); } /** * 保留scale位小数<br/> */ public static Double formatReturnDouble(BigDecimal big, int scale) { return formatReturnBigDecimal(big, scale).doubleValue(); } /** * 保留2位小数<br/> */ public static Double formatReturnDouble2(BigDecimal big) { return formatReturnBigDecimal(big, 2).doubleValue(); } /** * 保留scale位小数<br/> */ public static Double formatReturnDouble(Double d, int scale) { return formatReturnDouble(parseDouble(d), scale); } /** * 保留2位小数<br/> */ public static Double formatReturnDouble2(Double d) { return formatReturnDouble(parseDouble(d), 2); } /** * 保留scale位小数<br/> */ public static BigDecimal formatReturnBigDecimal(BigDecimal big, int scale) { if (big == null) { return BigDecimal.ZERO.setScale(scale, BigDecimal.ROUND_DOWN); } return big.setScale(scale, BigDecimal.ROUND_DOWN); } /** * 保留2位小数<br/> */ public static BigDecimal formatReturnBigDecimal2(BigDecimal big) { return formatReturnBigDecimal(big, 2); } /** * 保留scale位小数<br/> */ public static BigDecimal formatReturnBigDecimal(Double d, int scale) { return formatReturnBigDecimal(parseDouble(d), scale); } /** * 保留2位小数<br/> */ public static BigDecimal formatReturnBigDecimal2(Double d) { return formatReturnBigDecimal(parseDouble(d), 2); } /** * 将double转化为bigDecimal<br/> */ public static BigDecimal parseDouble(Double d) { if (d == null) { return BigDecimal.ZERO; } return new BigDecimal(Double.toString(d)); } }
转载请注明原文地址: https://www.6miu.com/read-7475.html

最新回复(0)