我的情况是昏迷。

var stringWithComa = "1,2"

当我试图将其转换为FloatDouble时,我会收到nil的消息。
Float(stringWithComa)//nil

Double(stringWithComa)//nil

但当我做到Decimal(string: stringWithComa)时,我会收到1
为什么会发生这个问题?

最佳答案

使用Decimal(string:locale:)解析包含本地化的
号码。例子:

print(Locale.current.decimalSeparator!) // ","

let stringWithComma = "1,2"
if let dec = Decimal(string: stringWithComma, locale: .current) {
    print(dec) // 1.2
}

否则,逗号将被视为无效字符。
FloatDouble初始值设定项相反,前导空白
而后面的“垃圾”则被忽略。如果至少
找到一个有效字符:
print(Decimal(string: "   1.23💣")) // Optional(1.23)
print(Decimal(string: "😈")) // nil

关于swift - 为什么在没有格式正确的输入的情况下从String返回十进制数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48923914/

10-14 11:17