java.math.BigDecimal常用操作
- 游戏开发
- 2025-08-19 05:33:02

刚学Java时我们会用float和double来做带小数的数值计算,但它俩只能用来做科学计算或者是工程计算。如果对精度要求高,比如项目中计算金额、工程面积时,我们需要使用Java在java.math包中提供的BigDecimal类。
记录一下我在项目中写的一个操作BigDecimal的工具类:
package com.xxx.util; import java.math.BigDecimal; import java.math.RoundingMode; /** * BigDecimal工具类 * <p> * 加法 add() * 减法 subtract() * 乘法 multiply() * 除法 divide() * 绝对值 abs() * * @Author wanglingqiang * @Date 2021/9/15 14:39 */ public class BigDecimalUtil { private static final BigDecimal BigDecimal_ZERO = new BigDecimal("0.00"); /** * 判断是否为空或0 * * @param arg * @return */ public static boolean isEmpty(BigDecimal arg) { if (arg == null || BigDecimal.ZERO.equals(arg) || BigDecimal_ZERO.equals(arg)) { return true; } return false; } /** * 乘法(精确小数点后2位、四舍五入) * * @param arg1 * @param arg2 * @return */ public static BigDecimal multiply(BigDecimal arg1, BigDecimal arg2) { if (arg1 == null || arg2 == null) { return BigDecimal.ZERO; } return arg1.multiply(arg2).setScale(2, RoundingMode.HALF_UP); } /** * 除法(精确小数点后2位、四舍五入) * * @param arg1 * @param arg2 * @return */ public static BigDecimal divide(BigDecimal arg1, BigDecimal arg2) { if (arg1 == null || arg2 == null) { return BigDecimal.ZERO; } return BigDecimalUtil.divide(arg1, arg2, 2); } /** * 除法(四舍五入) * * @param arg1 * @param arg2 * @param scale 精确几位数 * @return */ public static BigDecimal divide(BigDecimal arg1, BigDecimal arg2, int scale) { if (arg1 == null || arg2 == null) { return BigDecimal.ZERO; } return arg1.divide(arg2, scale, RoundingMode.HALF_UP); } /** * 返回值,精确小数点后2位、四舍五入 * * @param arg * @return */ public static BigDecimal valueOf(BigDecimal arg) { if (arg == null) { return BigDecimal.ZERO; } return arg.setScale(2, RoundingMode.HALF_UP); } /** * 比较两个值的大小 * arg1 > arg2 返回1 * arg1 < arg2 返回-1 * arg1 == arg2 返回0 * * @param arg1 * @param arg2 * @return */ public static int compare(BigDecimal arg1, BigDecimal arg2) { if (arg1 == null || arg2 == null) { throw new NullPointerException(); } return arg1 pareTo(arg2); } private BigDecimalUtil() { } }本章完
java.math.BigDecimal常用操作由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“java.math.BigDecimal常用操作”