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

Swift中NumberFormatter如何保留原小数位并添加千分位分隔符?

解决NumberFormatter保留原小数位数并添加千分位分隔符的问题

我完全懂你的需求——既要给数字加上千分位分隔符提升可读性,又不想丢失原本的小数位数,毕竟不同数值的精度不一样,硬固定位数反而会破坏数据准确性对吧?

你遇到的问题根源在于,NumberFormatter的.decimal样式默认会根据系统区域设置自动限制小数位数(比如很多地区默认是3位),所以才会把1.27826截断成1.278。咱们只需要调整几个属性就能搞定:

关键设置步骤

  • 保持numberStyle = .decimal来启用千分位分隔符
  • 设置maximumFractionDigits为一个足够大的数值(比如15),这样就能保留所有原有的小数位(double类型的有效精度大概是15-17位,15完全够用)
  • 设置minimumFractionDigits = 0,确保整数不会显示多余的小数点和末尾0

完整代码示例

// 建议把Formatter初始化放在全局或者类的属性中,避免重复创建
let numberFormatter: NumberFormatter = {
    let formatter = NumberFormatter()
    formatter.numberStyle = .decimal
    formatter.maximumFractionDigits = 15
    formatter.minimumFractionDigits = 0
    return formatter
}()

// 你的TableView点击处理代码
if let coinPrice = coinPriceDouble, let formattedPrice = numberFormatter.string(from: NSNumber(value: coinPrice)) {
    self.coinPriceLbl.text = "\(coinTitleText!): \(Cryptocoin.instance.fiatSymbol)\(formattedPrice)"
}

测试验证

用你给出的示例数组测试的话,结果会完全符合预期:

  • 11307.3 → 11,307.3
  • 1.27826 → 1.27826
  • 0.584175 → 0.584175
  • 1025.64 → 1,025.64

这样既保留了每个数值原本的小数精度,又正确添加了千分位分隔符,完美匹配你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:55:25