Ios 从NSNumberFormatter获取意外结果

Ios 从NSNumberFormatter获取意外结果,ios,swift,nsnumberformatter,Ios,Swift,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.stri

我有以下代码:

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用户的少量设备上,我得到了“003829585”。为什么呢?如何解决这一问题,以便始终获得正确的字符串表示形式?

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

如果我以NSNumber而不是double开头,我如何始终获得带小数点的字符串?为什么您希望使用“.”并期望使用“.”作为小数点的用户使用“.”?如果一个欧洲开发人员强迫你使用“,”作为小数点,你会高兴吗?@user69450 let double=nsNumber。doubleValue@user69450在您的代码中,我不明白为什么要创建NSNumber,当Int、Double、Float被桥接到NSNumber时(不是向后)