Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: angelfmarcos en 26 de Marzo de 2007, 07:39:45 PM

Título: precision float
Publicado por: angelfmarcos en 26 de Marzo de 2007, 07:39:45 PM
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
Título: precision float
Publicado por: lagman en 26 de Marzo de 2007, 08:29:48 PM
Prueba quitando la "f"

Saludos
Título: precision float
Publicado por: _Grey en 26 de Marzo de 2007, 10:00:50 PM
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.
Título: precision float
Publicado por: Vicente en 26 de Marzo de 2007, 10:28:05 PM
El tipo de dato decimal (.NET, Java) vale para los casos en los que quieras tener precisión. Un saludo!

Vicente
Título: precision float
Publicado por: angelfmarcos en 27 de Marzo de 2007, 12:29:45 AM
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.
Título: precision float
Publicado por: Pablo Zurita en 27 de Marzo de 2007, 03:27:28 AM
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.