Conversión de cadena a doble pierde precisión en Swift

Quiero ocultar una cadena para duplicar y mantener el mismo valor:

let myStr = "2.40" let numberFormatter = NSNumberFormatter() numberFormatter.locale = NSLocale(localeIdentifier: "fr_FR") let myDouble = numberFormatter.numberFromString(myStr)?.doubleValue ?? 0.0 

myDouble ahora es

 Double? 2.3999999999999999 

Entonces, ¿cómo convertir "2.40" para ser exacto de 2.40 como doble?

Actualizar:

Incluso el networkingondeo después de la conversión no parece funcionar

No quiero imprimir, quiero calcular y es importante que el número sea correcto, es cálculo de dinero y tasas

En primer lugar: ¡no lo haces! Lo que encontró aquí se denomina inexactitud del punto flotante. Las computadoras no pueden almacenar cada número con precisión. 2.4 no se pueden almacenar sin pérdida dentro de un tipo de punto flotante.

En segundo lugar: dado que el punto flotante siempre es un problema y se trata de dinero aquí (supongo que está tratando de almacenar 2,4 francos), su solución número uno es: no use numbers de punto flotante . Use el NSNumber que obtenga del numberFromString y no intente get un Double de él.
Alternativamente, desplace la coma multiplicándola y almacenándola como Int .

Las primeras soluciones podrían parecerse a:

 if let num = myDouble { let value = NSDecimalNumber(decimal: num.decimalValue) let output = value.decimalNumberByMultiplyingBy(NSDecimalNumber(integer: 10)) }