AD

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

Ver cursos de VB.NET en Udemy

Enlace de afiliado. No te cuesta nada extra.

🔷Lecciones de VB.NET
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.

Fíjate en que la comparación usa =, el mismo símbolo que la asignación. VB los distingue por el contexto.

La regla es no comparar decimales con igualdad. Lo correcto es comprobar que la diferencia es menor que una tolerancia: Math.Abs(a - b) < 0.000000001.

Y aquí .NET ofrece una salida que muchos lenguajes no tienen: el tipo Decimal, que guarda los números en base diez y da resultados exactos con los decimales que usamos las personas. Es más lento que Double y tiene menos rango, y para dinero es exactamente lo que hace falta. En VB se escribe con el sufijo D: 0.1D + 0.2D da exactamente 0.3D.

Que un lenguaje pensado para aplicaciones de gestión traiga un tipo así de serie no es casualidad.

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

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