사용자가 다른 로케일에있을 때 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를 사용해야 확신합니다,하지만 난이 작업을 수행하는 방법을하지 않고 문서하지 않는 문자열에서 double 또는 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는있는 사람 문자열에서 실제 복식을 만든 다음 계산에서 사용하는 방법을 잘 모르겠습니다 .
누군가 내게 팁을 줄 수 있습니까?
이let expenseDouble = expenseFormatter.number(from: expenseValue)?.doubleValue ?? 0
let guestDouble = guestFormatter.number(from: guestValue)?.doubleValue ?? 0
포맷터/파서가 직접 number
에 문자열을 변환 : 감사
사용자에게 숫자를 표시 할 때는'NSNumberFormatter'를 사용해야합니다. 파싱 할 때, 보통','을'.'로 대체하는 것으로 충분합니다. – Sulthan
비록 그것이 내가 가장 우아한 것으로 보이지 않기 때문에 나는 그 해결책을 생각하지 않았다는 것을 인정해야하지만 잘 작동했다. – RjC
(currencyFormatter = NumberFormatter는() currencyFormatter.usesGroupingSeparator = 사실 currencyFormatter.numberStyle = NumberFormatter.Style.currency currencyFormatter.locale = NSLocale.current 할 PRICESTRING = currencyFormatter.string하자 : 나는 문자열을 돌려주고 다음을 사용 for : result) print (priceString? 0) – RjC