在PHP中舍入到最大千,百等

时间:2017-05-12 08:09:38

标签: php numbers rounding

我有一个非常简单的PHP问题,但我不知道该怎么做。

我希望舍入到最大数百或数千,具体取决于数据库返回的值。

以下是我需要的几个例子:

  • DB返回值11,我希望PHP输出20
  • DB返回值104,我希望PHP输出200
  • DB返回值1404,我希望PHP输出2000
  • DB返回值10241,我希望PHP输出11000

等等

我想根据传递的值创建一个自动函数来实现。

谢谢!

4 个答案:

答案 0 :(得分:4)

最终实施,灵感来自Shaunkak's answer和SO的评论。谢谢你们这些文胸。 live demo

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

试试这个

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

答案 3 :(得分:0)

每个使用字符串操作的人都不会给我留下深刻的印象!

$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