AD

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

Ver cursos de Go en Udemy

Enlace de afiliado. No te cuesta nada extra.

🐹Lecciones de Go
Lección 57 / 68

Cuidado con los errores de redondeo en 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 muchos valores exactos en decimal no lo son en binario. El resultado se acerca muchísimo, pero no coincide.

El código de ejemplo suma valores decimales y muestra el resultado con detalle.

Go tiene aquí un comportamiento distinto de PHP o JavaScript que resulta muy útil: fmt.Println imprime suficientes dígitos para distinguir el valor real, así que la diferencia se ve directamente en pantalla en lugar de quedar oculta por el redondeo de la impresión.

La consecuencia práctica: no compares float64 con ==. Comprueba si la diferencia es menor que una tolerancia con math.Abs(a-b) < 1e-9. Y para dinero, trabaja en céntimos con enteros; Go no trae un tipo decimal en la biblioteca estándar, así que la alternativa es un módulo externo.

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

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