NumberFormatter将百分比值变为双倍为零

时间:2017-05-12 10:00:50

标签: ios swift

我希望将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%,则没有问题。

有什么想法吗?

附上语言设置页面。 enter image description here

2 个答案:

答案 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%")