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;
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;
?>