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

NSNumberFormatter格式异常及Eureka框架Decimal行适配求助

解决Eureka框架中NumberFormatter无法识别逗号作为小数点分隔符的问题

我之前也踩过类似的坑!你现在的问题核心是没有明确指定NumberFormatter的小数分隔符为逗号——默认情况下,Formatter会沿用系统区域设置的分隔符(比如英文区域用点),所以当你输入0,75或1,75时,它会把逗号当成千分位分隔符甚至直接忽略,最终只保留整数部分。

正确的NumberFormatter配置

你需要补充设置decimalSeparator = ",",同时确保分组分隔符(千分位)和它区分开,完整配置如下:

let formatter = NumberFormatter()
formatter.decimalSeparator = "," // 关键!指定逗号为小数分隔符
formatter.groupingSeparator = "." // 点作为千分位分隔符
formatter.minimumFractionDigits = 2
formatter.alwaysShowsDecimalSeparator = true
formatter.numberStyle = .decimal // 开启小数样式,确保格式逻辑生效

在Eureka的DecimalRow中使用

把配置好的Formatter绑定到你的DecimalRow上就能实现需求了:

<<< DecimalRow() { row in
    row.title = "输入小数"
    row.formatter = formatter
    row.value = 0.75 // 初始值会自动格式化为0,75
}

额外说明

如果你的应用需要适配多语言/不同区域,可以通过Locale动态设置分隔符,比如:

let locale = Locale(identifier: "fr_FR") // 法语区域默认用逗号做小数分隔符
formatter.locale = locale

但如果是固定需求要使用逗号作为小数点分隔符,直接硬设decimalSeparator是最稳妥的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:45:49