BigDecimal 精度完全指南

📅 2026/8/6 2:28:44
BigDecimal 精度完全指南
BigDecimal 舍入模式完全指南Java 的BigDecimal提供了 7 种舍入模式(Rounding Mode),用于控制数值在精度截断时的行为。正确选择舍入模式,对金融、计费、统计等业务至关重要。一、舍入模式总览舍入模式常量值中文含义核心特点ROUND_UP0向上舍入远离零方向舍入ROUND_DOWN1向下舍入靠近零方向舍入ROUND_CEILING2向正无穷舍入向 +∞ 方向舍入ROUND_FLOOR3向负无穷舍入向 -∞ 方向舍入ROUND_HALF_UP4四舍五入≥0.5 向上舍入ROUND_HALF_DOWN5五舍六入0.5 向上舍入,=0.5 向下舍入ROUND_HALF_EVEN6银行家舍入四舍六入五留双ROUND_UNNECESSARY7无需舍入要求精确,否则抛异常⚠️重要提示:BigDecimal中这些ROUND_*常量已在 Java 9 中被标记为Deprecated(已弃用),推荐使用RoundingMode枚举类。对应关系如下:BigDecimal.ROUND_UP→RoundingMode.UPBigDecimal.ROUND_DOWN→RoundingMode.DOWNBigDecimal.ROUND_CEILING→RoundingMode.CEILINGBigDecimal.ROUND_FLOOR→RoundingMode.FLOORBigDecimal.ROUND_HALF_UP→RoundingMode.HALF_UPBigDecimal.ROUND_HALF_DOWN→RoundingMode.HALF_DOWNBigDecimal.ROUND_HALF_EVEN→RoundingMode.HALF_EVENBigDecimal.ROUND_UNNECESSARY→RoundingMode.UNNECESSARY二、各舍入模式详解1. ROUND_UP(向上舍入)—— 远离零规则:始终向远离零的方向舍入,即正数变大,负数变小。javaimport java.math.BigDecimal; import java.math.RoundingMode; public class RoundingDemo { public static void main(String[] args) { BigDecimal value = new BigDecimal("3.14159"); // 保留2位小数 System.out.println(value.setScale(2, RoundingMode.UP)); // 3.15 System.out.println(new BigDecimal("-3.14159").setScale(2, RoundingMode.UP)); // -3.15