.floatValue
не обрабатывает локальные форматы, и ваш номер использует запятую в качестве десятичной точки - анализ просто останавливается на запятой, и вы получаете 10
. Используйте либо NumberFormatter
, либо Scanner
для анализа локализованных номеров. E.g.:
let formatter = NumberFormatter()
let val = formatter.number(from: str)
должно работать, если ваша локаль использует запятую в качестве десятичной точки. Если вы находитесь в одной локали и хотите разобрать числа, написанные в соответствии с другой, вы можете установить locale
свойство форматера.