Problemas con decimales...

05/07/2004 - 17:44 por Joan Vilariño | Informe spam
Hola a todos.

Tengo una base de datos de sql2000 con unos campos FLOAT.

Cuando grabo desde Visual Basic valores con 2 decimales, no se porqué,
sql2000 me graba valores con 15 o 16 decimales... por ejemplo: grabo 21,32
y en realidad me guarda 21.319999999999992 por ejemplo... eso me está
desmadrando una serie de campos auto-calculados por triggers...

Pero lo mas bueno es que si le hago un SELECT ROUND(micampo,2) FROM
mitabla sigo obteniendo el numero con chorrocientos decimales!!! a alguien
se le ocurre por qué ocurre esto?

Saludos y gracias de antemano

Usando M2, el revolucionario cliente de correo: http://www.opera.com/m2/
 

Leer las respuestas

#1 Liliana Sorrentino
05/07/2004 - 19:33 | Informe spam
Hola Joan,
El tipo de datos float, como el real, es APROXIMADO. Para tener el mismo
valor que ingresó deberías usar un tipo de datos decimal, o convertirlo.
Fijate en esto:
DECLARE @a FLOAT SET @a = 3.33
SELECT ValorA = @a, Redondeado = ROUND(@a,2), Decimal = CONVERT(DEC(10,2),
@a)

Saludos... Liliana.

"Joan Vilariño" escribió en el mensaje
news:
Hola a todos.

Tengo una base de datos de sql2000 con unos campos FLOAT.

Cuando grabo desde Visual Basic valores con 2 decimales, no se porqué,
sql2000 me graba valores con 15 o 16 decimales... por ejemplo: grabo 21,32
y en realidad me guarda 21.319999999999992 por ejemplo... eso me está
desmadrando una serie de campos auto-calculados por triggers...

Pero lo mas bueno es que si le hago un SELECT ROUND(micampo,2) FROM
mitabla sigo obteniendo el numero con chorrocientos decimales!!! a alguien
se le ocurre por qué ocurre esto?

Saludos y gracias de antemano

Usando M2, el revolucionario cliente de correo: http://www.opera.com/m2/

Preguntas similares