我的情况是昏迷。
var stringWithComa = "1,2"
当我试图将其转换为
Float
或Double
时,我会收到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
}
否则,逗号将被视为无效字符。
与
Float
和Double
初始值设定项相反,前导空白而后面的“垃圾”则被忽略。如果至少
找到一个有效字符:
print(Decimal(string: " 1.23💣")) // Optional(1.23)
print(Decimal(string: "😈")) // nil
关于swift - 为什么在没有格式正确的输入的情况下从String返回十进制数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48923914/