我正在解码一个字符串形式的小数,我想格式化它并将其作为Double返回
let str = "0.945404"
let numberFormatter = NumberFormatter()
numberFormatter.maximumFractionDigits = 2
numberFormatter.roundingMode = .halfUp
numberFormatter.numberStyle = .decimal
print(numberFormatter.number(from: str))numberFormatter.number(from: str)似乎返回了nil,我不知道为什么。
希望能帮上忙的人。谢谢
发布于 2018-02-25 14:19:14
如果您要获取固定格式的十进制字符串,则需要使用匹配的地区设置您的数字格式化程序。如果不这样做,格式化程序将假定用户的区域设置,并且许多区域设置不使用.作为小数分隔符。
将字符串转换为数字时,也不需要设置小数位数。稍后,在向用户显示数字时,您可以使用另一个数字格式化程序(这次使用用户的区域设置)和所需的小数位数来获得可显示的字符串。
let str = "0.945404"
let numberFormatter = NumberFormatter()
numberFormatter.locale = Locale(identifier: "en_US")
numberFormatter.numberStyle = .decimal
print(numberFormatter.number(from: str))发布于 2018-10-30 18:40:44
仅供参考:这个问题只发生在我在设备上测试的时候,在模拟器上,我猜格式化程序是选择美国的语言环境(尽管我已经激活了本地化,它应该是德语的)。
https://stackoverflow.com/questions/48968705
复制相似问题