Autor
|
Tema: number_format() y numeros enteros (Solucionado) (Leído 14,603 veces)
|
Littl3
Desconectado
Mensajes: 239
Tarde o temprano aparece el hombre
|
Hola,
Tengo un problema a la hora de mostrar un resultado numerico, quiero mostrar $resultado usando number_format para añadir un . como separador de miles y una , para los decimales, hasta aqui todo bien, ahora bien al usar number format tienes que indicar cuantos decimales quieres mostrar, yo le indico que 4 pero claro si se trata de un numero entero me muestra... 1234,0000 ... Claro me saca 4 decimales a 0 totalmente inutiles, yo lo que quiero es que si es un entero no me muestre decimales y si tiene decimales como maximo que me muestre 4.
echo number_format($resultado, 4, ',', '.');
Gracias, un saludo.
|
|
« Última modificación: 14 Octubre 2010, 17:21 pm por Littl3 »
|
En línea
|
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Ejemplo: <?php $numeros = array(1234.56, 50000, 1258.364, 10000221, 3000.24); foreach($numeros as $numeros){ echo "$result<br />"; } ?>
Salida: 1.234,5600 50,000 1.258,3640 10,000,221 3.000,2400
|
|
« Última modificación: 14 Octubre 2010, 15:28 pm por ~ Yoya ~ »
|
En línea
|
Mi madre me dijo que estoy destinado a ser pobre toda la vida. Engineering is the art of balancing the benefits and drawbacks of any approach.
|
|
|
Littl3
Desconectado
Mensajes: 239
Tarde o temprano aparece el hombre
|
Gracias pablomi pero el is_float solo me sirve para saber si se trata de un numero entero.
Yoya tu codigo me puede ayudar aun así no es exactamente lo que necesito, en tu caso si uno de los numeros contiene un solo decimal, le añade 3 zeros a la derecha tal y como le indicas en el number float.
La idea es poder formatear la salida del numero añadiendo separador de miles y separador de decimales y permitir un maximo de 4 decimales, seguire buscando si encuentro la solución la posteo, un saludo.
|
|
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
puedes poner un ejemplo de como quieres que salga...
|
|
|
En línea
|
Mi madre me dijo que estoy destinado a ser pobre toda la vida. Engineering is the art of balancing the benefits and drawbacks of any approach.
|
|
|
Littl3
Desconectado
Mensajes: 239
Tarde o temprano aparece el hombre
|
Por supuesto, Se trata de limitar a 4 el maximo de decimales permitidos, no obstante si el numero es entero o solo tiene una o dos posciones decimales no necesito que la tercera y la cuarta posición se rellenen con 0, a esto hay que añadir el '.' como separador de miles y la ',' como separador de decimales. Para limitar a 4 el maximo de decimales permitidos se puede hacer con round pero si lugo quiero añadirle el separador de miles y decimales del maravilloso number_format tengo que indicarle a este cuantos decimales quiero y la función rellena las posiciones con zeros de forma obligada en caso de que no exista el decimal. Pongo unos ejemplos de como quiero el formateo, creo que no me voy a librar de hacer una función especifica para esto, un saludo. - 4244,394144 --> 4.244,3941
- 4244 --> 4.244
- 3455,540 --> 3.455,54
- 4322,1000 --> 4.322,1
number_format($resultado, 4, ',', '.')
|
|
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Cree una función para hacer esto, solo había que hacer algunos cambios. Funcion: <?php function format($num) { { return $number; } else{ return $result; } } ?>
Ejemplo: <?php function format($num) { { return $number; } else{ return $result; } } $numeros = array('4244,394144', 4244, '3455,540', '4322,1000'); foreach($numeros as $numeros){ echo "$numeros --> ".format($numeros)."<br />"; } ?>
Salida: 4244,394144 --> 4.244,3941 4244 --> 4.244 3455,540 --> 3.455,54 4322,1000 --> 4.322,1
|
|
« Última modificación: 14 Octubre 2010, 16:40 pm por ~ Yoya ~ »
|
En línea
|
Mi madre me dijo que estoy destinado a ser pobre toda la vida. Engineering is the art of balancing the benefits and drawbacks of any approach.
|
|
|
Littl3
Desconectado
Mensajes: 239
Tarde o temprano aparece el hombre
|
Muchas gracias Yoya pero acabo de terminar mi función con cuatro líneas, la adjunto por si a alguien le sirve. <php function number_format_sin_zeros($valor) { $decimales = strlen(strrchr($valor, "."))-1; //Cuento posiciones decimales if($decimales == -1){$decimales=0;} //Si no existe el punto, decimales = 0 if($decimales > 4){$decimales = 4;} //Si la cifra tiene mas de 4 decimales muestro solo 4 return number_format($valor, $decimales, ',', '.'); //El numero de decimales } ?>
|
|
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Error... <?php function number_format_sin_zeros($valor) { $decimales = strlen(strrchr($valor, "."))-1; //Cuento posiciones decimales if($decimales == -1){$decimales=0;} //Si no existe el punto, decimales = 0 if($decimales > 4){$decimales = 4;} //Si la cifra tiene mas de 4 decimales muestro solo 4 return number_format($valor, $decimales, ',', '.'); //El numero de decimales } $numeros = array('4244,394144', 4244, '3455,540', '4322,1000'); foreach($numeros as $numeros){ echo "$numeros --> ".number_format_sin_zeros($numeros)."<br />"; } ?>
Notice: A non well formed numeric value encountered in /var/www/html/pruebas.php on line 8 4244,394144 --> 4.244 4244 --> 4.244 Notice: A non well formed numeric value encountered in /var/www/html/pruebas.php on line 8 3455,540 --> 3.455 Notice: A non well formed numeric value encountered in /var/www/html/pruebas.php on line 8 4322,1000 --> 4.322
|
|
|
En línea
|
Mi madre me dijo que estoy destinado a ser pobre toda la vida. Engineering is the art of balancing the benefits and drawbacks of any approach.
|
|
|
Littl3
Desconectado
Mensajes: 239
Tarde o temprano aparece el hombre
|
Eso es porque en php se utiliza el punto por defecto para el separador de decimales en vez de la coma, ademas la funcion funciona a la perfeccion trabajando con valores numericos y no con strings.
Prueba esto:
$numeros = array(4244.394144, 4244, 3455.540, 4322.1000);
Un saludo y gracias por el interés.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
mantisa,numeros reales,enteros caracter
Programación C/C++
|
mxsoun
|
1
|
3,146
|
5 Septiembre 2011, 19:25 pm
por Eternal Idol
|
|
|
TextBox que solo acepta números enteros o de punto flotante [¿Aporte?]
.NET (C#, VB.NET, ASP)
|
Xavelets
|
3
|
8,284
|
21 Septiembre 2011, 23:38 pm
por Xavelets
|
|
|
Código fuente para sumar números enteros aleatorios
Programación C/C++
|
UmbraNoche
|
5
|
13,337
|
4 Abril 2012, 00:41 am
por do-while
|
|
|
50 números enteros introducidos por teclado
Programación C/C++
|
douglascarvallo
|
4
|
5,114
|
23 Junio 2013, 06:58 am
por douglascarvallo
|
|
|
Necesito ayuda, validación de números enteros
Programación C/C++
|
DarkSorcerer
|
3
|
4,982
|
25 Noviembre 2013, 20:37 pm
por do-while
|
|