Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





precision float

Iniciado por angelfmarcos, 26 de Marzo de 2007, 07:39:45 PM

« anterior - próximo »

angelfmarcos

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

lagman

Prueba quitando la "f"

Saludos

_Grey

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.

Vicente

El tipo de dato decimal (.NET, Java) vale para los casos en los que quieras tener precisión. Un saludo!

Vicente

angelfmarcos

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.

Pablo Zurita

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.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.