如何格式化BigDecimal以保留小数点后3位
BigDecimal 格式化保留三位小数的实现方法
下面是几种常用的实现方式,可根据场景选择:
1. 使用 BigDecimal 自带的 setScale 方法
这是处理BigDecimal精度最原生的方式,直接通过指定保留位数和舍入规则完成:
BigDecimal num = new BigDecimal("14.2345"); // 保留3位小数,采用四舍五入规则 BigDecimal result = num.setScale(3, RoundingMode.HALF_UP); System.out.println(result); // 输出 14.235
常用舍入模式说明:
RoundingMode.HALF_UP:四舍五入(最常用)RoundingMode.DOWN:直接截断末尾多余小数RoundingMode.UP:无论末尾数值大小,直接向上进位
2. 使用 DecimalFormat 格式化输出字符串
如果需要将结果转为指定格式的字符串,推荐用DecimalFormat:
BigDecimal num = new BigDecimal("6.65346"); DecimalFormat df = new DecimalFormat("#.###"); // 可选:指定舍入模式,默认是HALF_UP df.setRoundingMode(RoundingMode.DOWN); String formattedStr = df.format(num); System.out.println(formattedStr); // 输出 6.653
如果需要强制显示前导0(比如0.1234要输出0.123而非.123),可以把格式改为0.000。
3. 使用 String.format 快速格式化
适合简单场景,但注意:此方法会将BigDecimal转为double,超大数值可能丢失精度,高精度场景慎用:
BigDecimal num = new BigDecimal("2.567"); String formattedStr = String.format("%.3f", num); System.out.println(formattedStr); // 输出 2.567
内容的提问来源于stack exchange,提问作者Андрей Андрей
相关产品推荐
相关产品推荐

