Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/11/2010, 10:04
PeterTheWall
 
Fecha de Ingreso: noviembre-2010
Mensajes: 65
Antigüedad: 13 años, 5 meses
Puntos: 0
ifnull me añade decimales en un campo tipo float

Hola! Os comento mi problema. Tengo uan tabla en la que hay un campo tipo float. El campo esta definido como : valor float ( admite nulos ). Pues bien, este campo puede calcularse de 2 maneras: 1) Se indica directamente, en tal caso siempre se guarda un número entero. 2) Mediante un cálculo, en tal caso antes de informar este campo, se efectúa un redondeo a dos decimales ( round(v_valor, 2) ). El camo se informa correctamente en ambos casos. Pero, al extraer su valor es cuando me da problemas. Por seguridad empleo la función "ifnull" de la siguiente manera: select ifnull(valor,0) from tabla. Y en lugar de recuperarme el número tal cual está en la tabla, me devuelve una serie de decimales adicionales. Si escribo: select valor from tabla obtengo 45,45 que es el valor correcto. Pero si escribo select ifnull(valor,0) from tabla, obtengo 45,45000789.
¿Qué hago mal? Se arregla rápidamente poniendo select ifnull(round(valor,2),0) from tabla. Pero parace evidente que no es la manera limpia, además, lógicamente, ahora para los valores que no tenían decimales me añade ",00". ¿Qué hago mal?

Muchas gracias por vuestro tiempo.