2016-01-22 5 views
2

У меня есть строка вроде этого: "8,0" или "4,25", и мне нужно преобразовать ее в Double, но как бы я это сделал? Должен ли я сначала заменить , на .?Swift - String с запятой-разделителем, чтобы удвоить

Я просмотрел NSNumberFormatter, но это вернуло nil для каждой строки.

let formatter = NSNumberFormatter() 
formatter.minimumFractionDigits = 2 
formatter.maximumFractionDigits = 2 
let grade = formatter.numberFromString(grade["Cijfer"].stringValue) 
print(grade) 

Что следует использовать?

ответ

3

Используйте decimalSeparator:

let formatter = NSNumberFormatter() 
formatter.decimalSeparator = "," 
let grade = formatter.numberFromString("2,3") 

if let doubleGrade = grade?.doubleValue { 
    print(doubleGrade) 
} else { 
    print("not parseable") 
} 

Печать

2,3

+0

И тогда я могу кастовал NSNumb эр в двойное? – jbehrens94

+0

@ jbehrens94 Я объяснил это еще одним шутником кода. – luk2302

+0

Я также получаю возврат как '9.800000000000001'? – jbehrens94

1

'чистый' Swift (нет Foundation)

let str = "9,8" 
let sstr = str.characters.split(",").joinWithSeparator(["."]) 
if let d = Double(String(sstr)) { 
    print(d) // 9.8 
} 
Смежные вопросы