Estoy tratando de encontrar una forma rápida de eliminar zero decimals
valores numéricos como este:
echo cleanNumber('125.00');
// 125
echo cleanNumber('966.70');
// 966.7
echo cleanNumber(844.011);
// 844.011
¿Existe alguna forma optimizada de hacer eso?
Respuestas:
$num + 0
Hace el truco.Internamente, esto es equivalente a lanzar para flotar con
(float)$num
ofloatval($num)
pero me parece más simple.fuente
floatval()
está haciendo.floatval
El comportamiento de @ESCOBAR está devolviendo un flotador. Yo diría que usarlo como formateador de decimales tampoco es muy obvio o limpio.//COMMENT
podrías usar la
floatval
funciónfuente
Esto es lo que uso:
NB Esto supone que
.
es el separador decimal. Tiene la ventaja de que funcionará en números arbitrariamente grandes (o pequeños) ya que no hay un elenco flotante. Tampoco convertirá los números en notación científica (por ejemplo, 1.0E-17).fuente
Simplemente agregar
+
a su variable de cadena hará que el encasillado (flotante) y elimine ceros:fuente
Para todos los que visiten este sitio y tengan el mismo problema con los comas, cambie:
a:
Si hay que eliminar dos ceros , cambie a:
Más aquí: número PHP: punto decimal visible solo si es necesario
fuente
Si desea eliminar los dígitos cero justo antes de mostrar en la página o plantilla.
Puedes usar la función sprintf ()
fuente
Debes lanzar tus números como flotadores, lo que hará esto por ti.
La salida de esto será lo que estás buscando.
fuente
(float)'0.1234567890124567890123456789'
convierte0.12345678901246
.No hay nada que no se pueda solucionar con una simple expresión regular;)
http://xkcd.com/208/
fuente
0
s significativos como en"100"
. También falla para despojar0
s fuera"100.010"
.$x = preg_replace("/(\.0*$)|((?<=\.\d*)0+$)/",'',$x);
Tipografía a
float
.fuente
Debido a esta pregunta es vieja. Primero, lo siento por esto.
La pregunta es sobre el número xxx.xx, pero en caso de que sea x, xxx.xxxxx o un separador decimal de diferencia como xxxx, xxxx, esto puede ser más difícil de encontrar y eliminar dígitos cero del valor decimal.
Y aquí está el código para la prueba.
fuente
Tenga cuidado al agregar +0.
El resultado de esto es 1.
fuente
Extraño, cuando obtengo un número de la base de datos con un tipo "flotante" y si mi número es ex. 10000 cuando lo floto, se convierte en 1.
He probado todas las soluciones anteriores pero no funcionó.
fuente
fuente
Forma complicada pero funciona:
Las soluciones anteriores son la forma óptima, pero en caso de que desee tener la suya, puede usarla. Lo que hace este algoritmo comienza al final de la cadena y comprueba si es 0 , si es así, se establece en una cadena vacía y luego pasa al siguiente carácter desde atrás hasta que el último carácter sea > 0
fuente
Puedes usar:
fuente
Esa es mi pequeña solución ... Se puede incluir en una clase y configurar vars
private $ dsepparator = '.'; // decimales private $ tsepparator = ','; // mil
Eso puede establecerlo el constructor y cambiarlo a los usuarios lang.
fuente
Esta es mi solución Quiero mantener la capacidad de agregar separador de miles
fuente
Esta es una función simple de una línea que usa rtrim, guardar separador y punto decimal:
fuente
Encontré que esta solución es la mejor:
fuente
Simple y preciso!
fuente
Solución definitiva: la única forma segura es usar regex:
funcionará para cualquier caso
fuente
Lo siguiente es mucho más simple
fuente
fuente
Este Código eliminará cero después del punto y devolverá solo dos dígitos decimales.
$ número = 1200.0000;
str_replace ('. 00', '', number_format ($ número, 2, '.', ''));
La salida será: 1200
fuente