Foros del Web » Programando para Internet » PHP »

Decimales

Estas en el tema de Decimales en el foro de PHP en Foros del Web. Hola a todos, tengo un formulario en el cual los proveedores pondran sus ofertas y hay un campo precio en el cual podran gravar precios ...
  #1 (permalink)  
Antiguo 09/02/2010, 14:24
thi
 
Fecha de Ingreso: abril-2009
Mensajes: 244
Antigüedad: 15 años
Puntos: 0
Decimales

Hola a todos,

tengo un formulario en el cual los proveedores pondran sus ofertas y hay un campo precio en el cual podran gravar precios decimales.

En la base de datos el campo lo he puesto como float pero aunque ponga 97,5 siempre me guarda 97,00. Como me guarda decimales pienso que el problema esta en php.

Un saludo.
  #2 (permalink)  
Antiguo 09/02/2010, 14:27
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Respuesta: Decimales

Estas trabajando con MySQL verdad? Intenta creando la tabla como decimal(10,2)
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #3 (permalink)  
Antiguo 09/02/2010, 14:28
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Decimales

No te sirve un campo DOUBLE (11,2) en la BD?
Si el problema crees que está en el php muestra el código (digo yo).
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #4 (permalink)  
Antiguo 09/02/2010, 15:05
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Decimales

No. Un campo DOUBLE o FLOAT es un campo de representación aproximada, carece de precisión para operaciones con valores monetarios porque genera redondeos que el usuario no entiende.
Para valores de precisión como los monetarios (recomendado por el Manual de Referencia) debe usarse DECIMAL(longitudtotal, decimales).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 09/02/2010, 15:10
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Decimales

Pues a mi con double (11,2) me funciona perfectamente para valores monetarios. También puedes double (11,4) para obtener 15,874,018,465.5302 por ejemplo. No es que desapruebe la documentación oficial, simplemente que los precios no van a tener diez mil decimales....
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #6 (permalink)  
Antiguo 10/02/2010, 05:34
thi
 
Fecha de Ingreso: abril-2009
Mensajes: 244
Antigüedad: 15 años
Puntos: 0
Respuesta: Decimales

He probado todos los tipos(DECIMAL, DOUBLE) y sigue sin funcionar.

Os pongo el codigo php:
print "<th>Precio Desde:(ejem: 9999,99)<br/><input type='text' size='28' name='precio' value='' tabindex='8' /><font color='#ff0000'><b> *</b></font></th>";

$query = "INSERT INTO Ofertas (Proveedor, Codigo, Denominacion, actividadprin, Fecha_inicio, Fecha_fin, Fecha_caduca, Agencias, Imagen_oferta, Precio, Origen, destino_zona_geo, destino_pais, destino_local, Fecha_publica, Ultima_hora, salidaespecial) VALUES ('".$my->username."', '".$_POST['codi']."', '".$_POST['descri']."', '".$_POST['actividadtour']."',
'".$fechainisql."', '".$fechafinsql."', '".$fechacadusql."', '".$_POST['agencia']."', '".$archivo_bien."', '".$_POST['precio']."', '".$_POST['combo_origen']."', '".$_POST['desti_geo']."', '".$_POST['desti_pais']."', '".$_POST['desti_local']."', '".$fechapublicacion ."', '".$_POST['ultima_hora']."', '".$salida_especial."')";

$result = mysql_query($query);
  #7 (permalink)  
Antiguo 10/02/2010, 05:52
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Decimales

Tu problema de inserción no es por el tipo de columna; si estás intentando entrar "97,5", MySQL descartará la coma, porque en las bases de datos los decimales se representan con punto y no con coma.

Respecto a DECIMAL(m,n) o DOUBLE, al indicarse en el DOUBLE la precisión, el tipo de columna fuciona como sinónimo de DECIMAL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:00.