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
相关产品推荐
相关产品推荐

