Foros del Web » Programando para Internet » PHP »

FLOAT - Me come el 0!

Estas en el tema de FLOAT - Me come el 0! en el foro de PHP en Foros del Web. Hola, bueno tengo un problemilla En MySQL cree un campo llamado PORCENTAJES del tipo FLOAT en la cual fui dando estos valores: Código: PORCENTAJE 0.46 ...
  #1 (permalink)  
Antiguo 29/10/2009, 18:21
 
Fecha de Ingreso: octubre-2009
Mensajes: 74
Antigüedad: 14 años, 5 meses
Puntos: 0
FLOAT - Me come el 0!

Hola, bueno tengo un problemilla

En MySQL cree un campo llamado PORCENTAJES del tipo FLOAT en la cual fui dando estos valores:

Código:
PORCENTAJE
0.46
0.47
0.48
0.49
0.50
0.51
1
2
El problema es que el valor 0.50, lo guarda como 0.5 y al de mostrarlo en PHP lo muestra como 0.5 y no como 0.50 !

No puedo ocupar el tipo de dato DECIMAL porque tengo valores como 1 y 2.
Y se deben mostrar tal cual como 1 y 2, sin ceros.

Para mi es necesario que muestre el valor completo 0.50!.

Se podría solucionar esto de alguna manera?

Le doy las gracias a todos los que me ayudan, realmente me han sacado de buenos problemas!

Saludos
  #2 (permalink)  
Antiguo 29/10/2009, 18:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: FLOAT - Me come el 0!

puedes usar sprintf()
http://php.net/sprintf
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/10/2009, 19:00
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: FLOAT - Me come el 0!

Desde luego que te lo guarda como 0.5, porque ese es el valor aritmético. Si quieres mostrar números con algún formato en particular puedes usar la función number_format (http://ar.php.net/manual/en/function.number-format.php):
Código PHP:
// Obviamente la función devuelve un string, el primer parámetro es un float, el segundo un integer y los otros dos son strings.
echo number_format($tuNumero$cantidadDeDecimales$separadorDecimal$seperadorDeMiles); 
¡Suerte!
  #4 (permalink)  
Antiguo 29/10/2009, 19:38
 
Fecha de Ingreso: octubre-2009
Mensajes: 74
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: FLOAT - Me come el 0!

Les doy millones de gracias por ayudarme !

bueno he intentado llegar a algo con la función number_format()

Código PHP:
$queryCosecha mysql_query("SELECT DISTINCT (num_semana) FROM plan_cosecha ORDER BY num_semana ASC",$dbCon) or die (mysql_error());

if (
mysql_num_rows($queryCosecha) > 0) {

while(
$rowCosecha mysql_fetch_array($queryCosecha)){

$decimal $rowCosecha['num_semana'];

if(!
is_int($decimal)){
$decimal number_format($decimal2".","0");
}
 echo 
$decimal;
}
}


?> 
Pero resulta que el campo que tengo es float y dentro de este campo están los valores : 0.46 ; 0.47 ; 0.48; 0.49 ; 0.5 ; 1 ; 2

Si que todos entran a la condición if

Y lo que deseo es que me arroje este resultado
0.47 ; 0.48; 0.49 ; 0.50 ; 1 ; 2

Ahh T_T
  #5 (permalink)  
Antiguo 29/10/2009, 20:50
 
Fecha de Ingreso: octubre-2009
Mensajes: 74
Antigüedad: 14 años, 5 meses
Puntos: 0
De acuerdo Respuesta: FLOAT - Me come el 0!

Código PHP:
 if($decimal<10 && strlen($decimal)>1)$decimal number_format($decimal2".","0"); 
Me han ayudado y de esta forma se ha solucionado :D

Gracias a todo el mundo
  #6 (permalink)  
Antiguo 29/10/2009, 22:00
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: FLOAT - Me come el 0!

No me termina de convencer... ¿y si tuvieses (por ejemplo) 10.14? Yo lo haría así:
Código PHP:
if($numero%1!=0)
{
    
$numero=number_format($numero2"."",");

El operador Módulo (%) devuelve el resto de la división entera; es decir: si el resto de la división entera entre el $numero y 1 es distinto de cero, aplicar el number_format. Ten presente que el último parámetro de number_format es el carácter que usará la función para representar al separador de miles (si quieres puedes ponerle la cadena vacia), así que si le pones "0", realmente la función devolverá datos muy extraños para representar números de valor absoluto mayor o igual a mil. ¡Suerte!
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 02:42.