AD

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

Ver cursos de R en Udemy

Enlace de afiliado. No te cuesta nada extra.

📊Lecciones de R
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 muestra la suma y luego la compara con 0,3, que da FALSE.

Aquí hay algo particular de R que hace el problema más traicionero: al mostrar el resultado, R lo redondea a siete cifras significativas, así que la suma se ve como 0.3. El error está ahí pero no se aprecia, y solo aparece al comparar. En otros lenguajes se ve el 0.30000000000000004 y al menos hay una pista. Para ver los dígitos reales hay que pedirlo con print(x, digits = 20).

La regla es no comparar decimales con ==. En R lo idiomático es isTRUE(all.equal(a, b)), que ya lleva una tolerancia razonable incorporada.

Y con dinero, ni tolerancias: trabaja en céntimos con enteros. Esto no es una peculiaridad de R — es el estándar IEEE 754 y funciona igual en todos los lenguajes.

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

🧪 Este sitio no puede compilar ni ejecutar R 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)