Swift中NumberFormatter格式化1000不显示千位分隔符怎么办?
问题原因
你遇到的现象是NumberFormatter默认的本地化分组规则导致的:系统默认的十进制格式配置中,针对4位及以下的整数不会触发千位分隔符展示,只有数值≥10000(5位及以上)才会自动生成分隔符,和你设置numberStyle = .decimal没有冲突,是默认阈值的问题。
解决方法
手动修改两个分组相关的属性即可覆盖默认规则:
groupingSize:设置每多少位做一次分组,千位分隔符对应设为3minimumGroupingDigits:设置触发分组的最低位数,设为1即可让所有超过3位的数值都生成分隔符
完整实现代码如下:
let formatter = NumberFormatter() formatter.numberStyle = .decimal // 配置分组规则 formatter.groupingSize = 3 formatter.minimumGroupingDigits = 1 formatter.string(for: 1000) // 输出对应本地化规则的千分位格式,如"1 000"或"1,000"
如果需要固定使用逗号作为千位分隔符,不受系统地区设置影响,可以额外指定locale:
formatter.locale = Locale(identifier: "en_US_POSIX") // 此时1000输出为"1,000"
内容的提问来源于stack exchange,提问作者Gorthez
相关产品推荐
相关产品推荐

