with unidades unidad two truncar signo round redondeo redondear redondea millon mil mas khan float ejercicios ejemplos decimals decimales como cercana cantidad actividad academy php numbers rounding

unidades - tofixed php



Redondear a max mil, cientos, etc. en PHP (5)

Aquí están mis 2 centavos:

$v = 11; if(strlen($v)<4) { $v = str_pad((int)(substr($v, 0, 1)+1), strlen($v), 0, STR_PAD_RIGHT); } else { $v = substr($v, 0, -4) . str_pad((int)(substr($v, -4, -3)+1), 4, 0, STR_PAD_RIGHT); }

Tengo una pregunta PHP bastante simple pero no estoy seguro de cómo hacerlo.

Quiero redondear al máximo cien o mil dependiendo del valor devuelto por la base de datos.

Aquí hay algunos ejemplos de lo que necesito:

  • DB devuelve el valor 11, quiero que PHP genere 20
  • DB devuelve el valor 104, quiero que PHP genere 200
  • DB devuelve el valor 1404, quiero que PHP genere 2000
  • DB devuelve el valor 10241, quiero que PHP genere 11000

etcétera etcétera

Me gustaría crear una función automática para hacer eso, de acuerdo con el valor pasado.

¡Gracias!


Prueba este

<?php $input = 10241; //this will be your input $charLength = strlen($input); $number = [1,10,100,1000,10000,100000]; $output = ceil($input / $number[$charLength - 1]) * $number[$charLength - 1]; //same like this ceil($input / 10) * 10; ?>


Realmente no estoy impresionado por todos los que usan operaciones de cadena!

$zeros = log($value) * log10(M_E) | 0; $zeros = min($zeros, 3); // Only round to tens, hundreds or thousands $tens = pow(10, $zeros); $result = ceil($value / $tens) * $tens;

https://eval.in/1003730


Implementación final , inspirada en la respuesta de Shaunkak y el comentario de SO. Gracias por estos sujetadores ... demo en vivo

<?php $val = 10241.67; if($val >= 1000) { echo ceil($val / 1000) * 1000; } else { $length = strlen(ceil($val)); $times = str_pad(''1'', $length, "0"); echo ceil($val / $times) * $times; }


<?php $value = 14; $len = strlen($value); $div = str_pad(''1'', $len, "0"); echo ceil($value / $div) * $div; ?>