Foros del Web » Programando para Internet » PHP »

Ayuda is_float() . Intento saber si un número lleva decimales o no

Estas en el tema de Ayuda is_float() . Intento saber si un número lleva decimales o no en el foro de PHP en Foros del Web. Buenas, tengo un problema con los precios,porq quiero hacer que si el número lleva decimales, mostrarlo de una forma y si no, mostrarlo de otra. ...
  #1 (permalink)  
Antiguo 19/07/2004, 12:01
Avatar de oskitar  
Fecha de Ingreso: junio-2002
Mensajes: 245
Antigüedad: 21 años, 10 meses
Puntos: 1
Ayuda is_float() . Intento saber si un número lleva decimales o no

Buenas, tengo un problema con los precios,porq quiero hacer que si el número lleva decimales, mostrarlo de una forma y si no, mostrarlo de otra. Osea, si el número es 1234.25 , mostrar 1.234,25 y si es 1234 . que muestre 1.234 . He usado is_float y number_format(). Tengo este código:

$prec= $row["precio"];
$precio= number_format($prec, 0,',','.');
$precio2= number_format($prec, 2,',','.');

if((is_float($prec))){echo $precio2;}else{echo $precio;};

El campo precio de la bd es un double . Me dijeron que no tiene nada que ver, que si el número lleva decimales, devuelve is_float verdadero y si no lo es, devuelve falso.

Esto no me hace nada, me imprime siempre lo mismo, siempre ejecuta el else y pasa del if

saludos y gracias
  #2 (permalink)  
Antiguo 19/07/2004, 14:53
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
muy probablemente $row['precio'] contiene un dato tipo String, es decir, en vez de tener 7.8 contiene "7.8". Por eso se salta el is_float();
entonces comprueba si el float manejandolo como cadena, verificando si tiene decimales diferentes a cero.

un saludo
  #3 (permalink)  
Antiguo 19/07/2004, 15:43
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Mira también la función gettype()
http://www.php.net/manual/es/function.gettype.php

Y también sería bueno utilizar un tipo de campo adecuado en la base de datos para el precio. (FLOAT es mejor que VARCHAR).

Saludos
  #4 (permalink)  
Antiguo 19/07/2004, 17:24
Avatar de oskitar  
Fecha de Ingreso: junio-2002
Mensajes: 245
Antigüedad: 21 años, 10 meses
Puntos: 1
bueno, esta ha sido mi solución

if(substr($prec,-3)=="000"){echo $precio2;}else{echo $precio;};

pero, claro, habrá veces que el número no termine en 000. He estado buscando por ahí y no encuentro una función adecuada. Sólo necesito una función que compruebe que en la cadena $prec hay un punto. Con esa función estará arreglado. if($prec contiene ".") {echo $precio2;}else{echo $precio;}; , que función puedo usar para eso?

saludos
  #5 (permalink)  
Antiguo 20/07/2004, 04:04
Avatar de oskitar  
Fecha de Ingreso: junio-2002
Mensajes: 245
Antigüedad: 21 años, 10 meses
Puntos: 1
Listo, he utilizado esta función, por si a alguien le pasa lo mismo...

if(strrpos($prec, ".")== false){echo $precio2;}else{echo $precio;};

saludos y muchas gracias
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 15:40.