如何使用DecimalFormat对数字进行舍入缩放,实现指定格式输出
解决方案
原有写法new DecimalFormat("0000.0")仅能适配「四位整数+一位小数」的数值格式,你传入的原始数字是10位整数,未做缩放处理直接格式化自然无法得到预期结果,可按如下方式实现:
实现思路
- 先将原始数字缩放,得到「四位整数+一位小数」的数值:1439131519 除以 10^6 即可得到 1439.131519
- 修改DecimalFormat的小数点分隔符为逗号,替代默认的英文句号
- 按需配置舍入规则,避免自动四舍五入超出预期
代码实现
import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.math.RoundingMode; public class NumFormatTest { public static void main(String[] args) { long originNum = 1439131519L; // 计算缩放比例:将小数点移动到前4位有效数字之后 int pow = String.valueOf(originNum).length() - 4; double scale = Math.pow(10, pow); double processedNum = originNum / scale; // 配置格式化规则 DecimalFormat df = new DecimalFormat("0000.0"); DecimalFormatSymbols symbols = new DecimalFormatSymbols(); symbols.setDecimalSeparator(','); df.setDecimalFormatSymbols(symbols); // 若不需要四舍五入,直接截断保留一位小数,可开启下面配置 df.setRoundingMode(RoundingMode.DOWN); String result = df.format(processedNum); System.out.println(result); // 输出1439,1 } }
内容的提问来源于stack exchange,提问作者MOKRANI
相关产品推荐
相关产品推荐

