Ver Mensaje Individual
  #10 (permalink)  
Antiguo 26/05/2009, 09:51
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Decimal sin redondeo

No suelo poner PHP porque las reglas de este foro (Bases de Datos) no permiten poner códigos de lenguaje de programación, pero la solución es híbrida, así que allá va:
Primero tienes que definir ese campo como DECIMAL y no como FLOAT:
Código sql:
Ver original
  1. IMPORTE DECIMAL(5,1)

Ten en cuenta que el tipo DECIMAL se representa por PRECISION y ESCALA. Precisión es la cantidad de dígitos totales (5 en este caso) y la escala es la cantidad de decimales que usarán (1) por detrás de la coma.
Otra cosa que debes recordar es que la PRECISION incluye el espacio para la coma (1) y el signo, y otro para el decimal (1 en este caso), por lo que el entero posible en la definición del ejemplo tiene sólo tres dígitos.
Deberás poner, entonces, elvalor de ancho de bytes que vayas a usar.

Una vez hecho esto, debes modificar la línea del PHP para incluir el truncado del valor:
Código PHP:
Ver original
  1. $sql="INSERT INTO facturas (referencia,importe,puntos,tarjeta,usuario,fechaho ra) VALUES ('$referencia','$importe',TRUNCATE('$puntos',1),'$tarjeta','$u suario','$fechahora')";

Ahora bien, si el valor está llegando redondeado, el problema se está produciendo en PHP, en ese caso tienes que usar la función round() de PHP para controlar la precisión del número y luego que el SQL lo corte.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)