У меня есть следующая проблема с вычислениями 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, насколько я понимаю, другие вопросы здесь, но я не понимаю, как это сделать, и документация не укажите пример создания двойного или float из строки. Я попытался следующие, но я получаю сообщение об ошибке о том, что я не могу ни создавать двойников и не использовать эти переменные для расчетов:
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