我希望将String
precent值转换为Double
:
let formatter = NumberFormatter()
formatter.numberStyle = .percent
let a = formatter.number(from: "12.5%")
print(a)
它在游乐场很好用。但是当在“romana”(Română)语言下进行项目测试时,它会打印nil
。如果我将12.5%更改为int类型百分比值,如56%
,则没有问题。
有什么想法吗?
答案 0 :(得分:4)
如果我将12.5%更改为int类型百分比值,如56%,则没有问题。
这通常意味着语言环境设置对小数点分隔符使用不同的字符,即逗号isModified
而不是点,
切换到.
应解决此问题。
我使用
获取了所有源编号12,5%
分隔符
如果您的号码在源代码中是硬编码的,则不应依赖用户选择的语言环境。使用system
locale处理硬编码输入:
.
[
formatter.locale = Locale.system
是]包含固定“backstop”设置的通用语言环境,为其他未定义的键提供值。如果您不想进行任何本地化,请使用系统区域设置。
答案 1 :(得分:1)
试试这个
let formatter = NumberFormatter()
formatter.numberStyle = .percent
formatter.locale = Locale(identifier: "EN")
let a = formatter.number(from: "12.5%")