with round redondear number mostrar money floatval float decimals decimales php decimal numbers

round - redondear decimales php



NĂºmero predeterminado de lugares decimales a generar en PHP (6)

gracias por todas las respuestas, la solución fue arrojar el valor de retorno del método responsable a un carro flotante. Es decir, estaba haciendo

return someNumber.'' grams'';

Lo acabo de cambiar

return (float)someNumber.'' grams'';

luego, PHP truncó los ceros finales cuando sea necesario.

¿Alguien puede cerrar esto?

Hago mi trabajo de php en mi caja de desarrollo en casa, donde tengo una configuración de LAMP rudimentaria. Cuando miro mi sitio web en mi caja casera, cualquier número que haga eco se trunca automáticamente a la precisión menos requerida. Por ejemplo, 2 tiene el eco de 2, 2.2000 se repite como 2.2.

En el cuadro de producción, todos los números se repiten con al menos un cero innecesario, por ejemplo, 100 se convierte en 100.0. En ambos cuadros, la versión de PHP es 5.2.5. ¿Alguien sabe de improviso si hay una configuración que puedo cambiar que forzará a PHP a eliminar automáticamente cualquier ceros innecesario? No quiero tener que ir a todos los lugares de mi código donde produzco un número y reemplace echo con printf o algo así.

Muchas gracias.


Solo para descartar otras causas posibles: ¿De dónde vienen los números? ¿Hace esto con valores literales?

No parece probable que la configuración de precisión sola pueda causar esto. Verifique también si algo puede estar interfiriendo con la salida a través de cosas como auto_prepend_file o output_handler .


Una mirada rápida a través de la configuración INI disponible me hace pensar que sus valores de precisión son diferentes.


Y cuando no puede confiar en la configuración de PHP, no se olvide de number_format () que puede usar para definir cómo se devuelve un número, por ejemplo:

// displays 3.14 as 3 and 4.00 as 4 print number_format($price, 0); // display 4 as 4.00 and 1234.56 as 1,234.56 aka money style print number_format($int, 2, ".", ",");

PD: y trate de evitar el uso de money_format (), ya que no funcionará en Windows y algunos otros cuadros


Debería usar el comando round () para redondear siempre la precisión que desea, de lo contrario algún día obtendrá algo como 2.2000000000123 debido a la naturaleza de la aritmética de flotación.


Pruebe la round funciones incorporadas;

float round ( float $val [, int $precision = 0 [, int $mode = PHP_ROUND_HALF_UP ]] );

Devuelve el valor redondeado de val a la precisión especificada (número de dígitos después del punto decimal). la precisión también puede ser negativa o cero (por defecto).

Ejemplo # 1 round () ejemplos

<?php echo round(3.4); // 3 echo round(3.5); // 4 echo round(3.6); // 4 echo round(3.6, 0); // 4 echo round(1.95583, 2); // 1.96 echo round(1241757, -3); // 1242000 echo round(5.045, 2); // 5.05 echo round(5.055, 2); // 5.06 ?>

Ejemplo de modo de ejemplo n. ° 2

<?php echo round(9.5, 0, PHP_ROUND_HALF_UP); // 10 echo round(9.5, 0, PHP_ROUND_HALF_DOWN); // 9 echo round(9.5, 0, PHP_ROUND_HALF_EVEN); // 10 echo round(9.5, 0, PHP_ROUND_HALF_ODD); // 9 echo round(8.5, 0, PHP_ROUND_HALF_UP); // 9 echo round(8.5, 0, PHP_ROUND_HALF_DOWN); // 8 echo round(8.5, 0, PHP_ROUND_HALF_EVEN); // 8 echo round(8.5, 0, PHP_ROUND_HALF_ODD); // 9 ?>