当用户处于不同的语言环境时,我有以下iOS计算问题。在欧洲,小数点分隔符是“,”而在其他地区可能是“。”。只要用户使用“。”的语言环境所有的计算都可以正常工作,但是当使用逗号时,我会得到一个错误。下面是简单的代码至今:如何解决计算中的语言环境小数点/逗号导致的iOS错误? (与NumberFormatter)
if let expense = expenseTextField.text
let expenseValue = Double(expense)
let guests = guestTextField.text
let guestValue = Double(guests) {
let result = round((expenseValue/guestValue) * 100)/100
resultLabel.text = priceString
//resultLabel.text = String(result)
} else {
resultLabel.text = "No values!"
}
我敢肯定,我必须就我的理解这里的其他问题使用的NumberFormatter,但我不明白如何做到这一点和文档不提供如何从字符串创建双精度型或浮点型的示例。我尝试以下,但我得到一个错误,说明我不能没有创造双打也没有使用这些变量进行计算:
if let expense = expenseTextField.text
let expenseValue = String(expense),
let guests = guestTextField.text
let guestValue = String(guests) {
let expenseFormatter = NumberFormatter()
expenseFormatter.number(from: expenseValue)
let guestFormatter = NumberFormatter()
guestFormatter.number(from: guestValue)
let expenseDouble = Double(expenseFormatter)
let guestDouble = Double(guestFormatter)
let result = round((expenseDouble/guestDouble) * 100)/100
resultLabel.text = priceString
} else {
resultLabel.text = "No values!"
}
我不知道如何从的NumberFormatter这些字符串创建真正的双打,然后在计算中使用这些。
有人可以给我一个小费? 感谢
当向用户提供号码时,您必须使用'NSNumberFormatter'。解析时,通常只需用'.'替换所有的'''。 – Sulthan
这很好,但我必须承认,我没有想到这个解决方案,因为它对我来说似乎不是最优雅的。我用下面给回一个字符串: – RjC
让的CurrencyFormatter =的NumberFormatter() currencyFormatter.usesGroupingSeparator =真 currencyFormatter.numberStyle = NumberFormatter.Style.currency currencyFormatter.locale = NSLocale.current 让PRICESTRING = currencyFormatter.string(为:结果) print(priceString ?? 0) – RjC