swift: проблема преобразования строки в двойную

Вот простой код в игровой площадке Xcode 7.3.1:

var str = "8.7" print(Double(str))

выход удивительный:Optional(8.6999999999999993)

также,Float(str) дает:8.69999981

Есть какие-нибудь мысли или причины на этот счет? Любые ссылки на это будут оценены.

Кроме того, как мне тогда преобразовать "8.7" в 8.7 как Double (или Float)?

редактировать

в кратчайшие сроки:

(str как NSString) .doubleValue возвращает 8,7

Теперь это нормально. Но мой вопрос, по-прежнему, не дает полного ответа. Мы нашли альтернативу, но почему мы не можем полагаться на Double ("8.7"). Пожалуйста, дайте более глубокое понимание этого.

Редактировать 2

(«6,9» как NSString) .doubleValue // печатает 6.9000000000000004

Итак, вопрос снова открывается.

Ответы на вопрос(3)

Ваш ответ на вопрос