Estos decimales...
Hola, buenas, quisiera saber si saben porque me pasa esto con decimales.
Estoy sumando, en un bucle, 10 veces, 2.2. Todo con atributos float. Y el resultado (Que tambien lo guardo en un float, me da 22.000000476837158 en vez de 22. Alguien sabe el porque? Sabe una solucion?
Muchas gracias
Estoy sumando, en un bucle, 10 veces, 2.2. Todo con atributos float. Y el resultado (Que tambien lo guardo en un float, me da 22.000000476837158 en vez de 22. Alguien sabe el porque? Sabe una solucion?
Muchas gracias
Hola:
Es un problema de precisión que pasa con cualquier lenguaje. Un float se representa con un número limitado de bits en el ordenador. Como hay infinitos números con infinitos decimales, no se pueden representar todos. Es fácil al hacer cuentas, que las últimas cifras empiecen a fallarte.
Si usas double, tienes más precisión y quizás te arregle este problema concreto, pero te puede salir de todas formas en otras cuentas.
Otra solución es saber que a partir de determinada cifra (por ejemplo, a partir de la octava cifra después de la primera que no sea cero) el resultado no es significativo (o puede ser erroneo) y truncar el resto de decimales (al menos, en la presentación en pantalla).
Se bueno.
Es un problema de precisión que pasa con cualquier lenguaje. Un float se representa con un número limitado de bits en el ordenador. Como hay infinitos números con infinitos decimales, no se pueden representar todos. Es fácil al hacer cuentas, que las últimas cifras empiecen a fallarte.
Si usas double, tienes más precisión y quizás te arregle este problema concreto, pero te puede salir de todas formas en otras cuentas.
Otra solución es saber que a partir de determinada cifra (por ejemplo, a partir de la octava cifra después de la primera que no sea cero) el resultado no es significativo (o puede ser erroneo) y truncar el resto de decimales (al menos, en la presentación en pantalla).
Se bueno.