Hola
Tengo un problemilla usando el tipo float en Visual Studio 2005
El siguiente codigo:
int a = 6;
float b = (float)a / 10.0f
En b obtengo el valor 0.59999999... en lugar de 0.6
¿Hay alguna manera de evitar eso?
También muchas veces hago la asignacio
float b = 0.2f;
y me coge el valor 0.20000000001
Un saludo
Prueba quitando la "f"
Saludos
Si usas double en lugar de float, quitando la f como te dicen, quiza funcione mejor.
De todas formas, seguiras teniendo una precision finita, y es que estos problemas, son normales, son errores de precision minimos, pero, no caben todas las infinitas posibilidades, y ocurren estas cosas.
Saludos.
El tipo de dato decimal (.NET, Java) vale para los casos en los que quieras tener precisión. Un saludo!
Vicente
Muchas gracias por contestar
He probado usando con y sin la f al final y usando double y el resultado es el mismo.
El principal problema que tengo es que esos valores los guardo en SQL Server y un valor de por ejemplo 1.3999999999 me lo deja en 1.4, pero bueno, si no encuentro solucion siempre puedo guardarlo como entero y al recuperar el valor dividir por lo que haga falta
Un saludo.
Esto tiene que ver con como son representados los floats y doubles según el standard IEEE. Si te interesa saber mas del tema lee http://docs.sun.com/source/806-3568/ncg_goldberg.html.