关于BigDecimal的计算
2017-06-06 14:14
274 查看
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)); } }
相关文章推荐
- 关于mybatis 使用case when 计算BigDecimal 数据返回对象的问题
- 关于 java 中 Double 型 用于计算产生的误差举例 ,应该用BigDecimal代替Double
- 关于BigDecimal精度影响计算结果的问题
- 关于Java中数据计算字段,使用BigDecimal
- JAVA中关于日期的计算
- 货币计算中的精度问题--java.math.BigDecimal
- 求助:关于计算列的问题!!!
- 关于java中对数的计算
- 使用java BigDecimal完成圆周率π的计算
- 关于自定义设置聚合计算的解决方案
- 关于用优先级队列和树解决中缀表达式计算的一点比较
- 关于Intel®迅驰™移动计算技术的介绍
- 关于经纬度的两个计算[Teaks&xgluxv]
- JAVA中关于日期的计算
- 关于硬盘种类、物理几何结构及硬盘容量、分区大小计算
- Java中关于日期格式、日期的解析和计算
- 关于国产科学(计算)软件的一些思考
- 关于 贝叶斯 计算公式的一个问题
- 关于子网掩码计算
- 关于文本相似度计算开发包的构想