AD

¿Ya dominas lo básico? Un curso estructurado de Objective-C es la vía rápida para dar el salto.

Ver cursos de Objective-C en Udemy

Enlace de afiliado. No te cuesta nada extra.

🍎Lecciones de Objective-C
Lección 57 / 68

Cuidado con los errores de la coma flotante

En esta lección verás por qué 0.1 + 0.2 no da exactamente 0.3.

Los decimales se guardan en binario, y en binario 0,1 no tiene representación exacta, igual que 1/3 no la tiene en base diez.

El código de ejemplo imprime la suma con muchos decimales y luego la compara con 0,3.

Fíjate en el marcador %.17g: son las cifras necesarias para distinguir cualquier double de otro. Con %.2f el resultado se vería como 0,30 y el problema quedaría escondido. Que la lección lo muestre entero es deliberado.

La regla es no comparar decimales con ==. Lo correcto es comprobar que la diferencia es menor que una tolerancia: fabs(a - b) < 1e-9.

Y con dinero, ni tolerancias: en el mundo de Apple está NSDecimalNumber, que opera en base diez y da resultados exactos, y es lo que se usa para precios en la App Store. Esto no es una peculiaridad del lenguaje — es el estándar IEEE 754 y funciona igual en todos.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Objective-C directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)