You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用DecimalFormat对数字进行舍入缩放,实现指定格式输出

解决方案

原有写法new DecimalFormat("0000.0")仅能适配「四位整数+一位小数」的数值格式,你传入的原始数字是10位整数,未做缩放处理直接格式化自然无法得到预期结果,可按如下方式实现:

实现思路

  1. 先将原始数字缩放,得到「四位整数+一位小数」的数值:1439131519 除以 10^6 即可得到 1439.131519
  2. 修改DecimalFormat的小数点分隔符为逗号,替代默认的英文句号
  3. 按需配置舍入规则,避免自动四舍五入超出预期

代码实现

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:24:00