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

如何使用Java String.format()将数字字符串格式化为3 551 280,00样式?

实现自定义金额格式化

要将字符串"355128000"格式化为"3 551 280,00",单纯依赖String.format()很难直接实现首数字后加空格的特殊分组规则,推荐结合数值转换和DecimalFormat来完成,具体代码如下:

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;

public class Main {
    public static void main(String[] args) {
        String amount = "355128000";
        
        // 将原始字符串转为数值,把最后两位作为小数位
        long rawValue = Long.parseLong(amount);
        double targetValue = rawValue / 100.0;
        
        // 自定义格式符号:设置分组分隔符为空格,小数分隔符为逗号
        DecimalFormatSymbols symbols = new DecimalFormatSymbols();
        symbols.setGroupingSeparator(' ');
        symbols.setDecimalSeparator(',');
        
        // 定义格式模式:首数字后单独分组,后续每3位一组,强制保留两位小数
        DecimalFormat formatter = new DecimalFormat("# ##0.00", symbols);
        
        String formattedAmount = formatter.format(targetValue);
        System.out.println(formattedAmount); // 输出:3 551 280,00
    }
}

关键说明

  • 数值转换:原始字符串"355128000"对应实际金额3551280.00,因此先转成long再除以100得到带小数的数值。
  • 格式模式:# ##0.00的分组规则是从右往左每3位分隔,但开头的# ##会让首数字后先分出一个单独的数字,正好匹配"首数字后加空格,后续每3位一组"的格式要求。
  • 符号自定义:通过DecimalFormatSymbols替换默认的分组/小数分隔符,实现空格分组、逗号分隔小数的效果。

如果一定要使用String.format(),可以先通过DecimalFormat完成核心格式化,再结合String.format()做后续调整,但DecimalFormat已经能直接满足需求,无需额外步骤。

内容的提问来源于stack exchange,提问作者BAKHALED Ibrahim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:15:04