从 NSNumberFormatter 得到意想不到的结果

Getting unexpected result from NSNumberFormatter

我有以下代码:

var num = 0.03829585
let amountNumber = NSNumber(double: num)
let nFormatter = NSNumberFormatter()
nFormatter.numberStyle = .DecimalStyle
nFormatter.roundingMode = .RoundHalfUp
nFormatter.maximumFractionDigits = 8
var numStr = nFormatter.stringFromNumber(amountNumber)!

numStr 的预期结果是“0.03829585”。这是我用我的测试设备得到的结果,但在少数 TestFlight 用户的设备上我得到“0,03829585”。这是为什么?如何解决这个问题,以便我始终获得正确的字符串表示形式?

NSNumberFormatter 考虑了语言环境。这些设备可以将它们的区域设置为人们使用逗号代替点的国家/地区。这是一个功能,而不是错误。人们专门使用 NSNumberFormatter 来实现本地化功能。如果你想让点无处不在,你可以简单地将那个双精度转换成一个字符串(不要这样做)。这不仅解决了 point/comma 问题,还解决了数字问题,例如波斯数字与我们知道的数字不同