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

fra*_*ool 2 php numbers rounding

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

我想根据数据库返回的值四舍五入到最大一百或一千。

以下是我需要的一些示例:

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

等等等等

我想根据传递的值创建一个自动函数来做到这一点。

谢谢!

Kri*_*ofe 5

最终实现,灵感来自Shaunkak 的回答和 SO 的评论。谢谢你的这些胸罩... 现场演示

<?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;
}
Run Code Online (Sandbox Code Playgroud)


Ham*_*ish 5

真的对每个使用字符串操作的人印象不深!
使用以 10 为底的对数来获取输入中零的数量。
log 10 x = y 等于 10 y = x

$zeros = floor(log10($input));
$zeros = min($zeros, 3); // Only round to tens, hundreds or thousands
$tens = pow(10, $zeros);
$result = ceil($input / $tens) * $tens;
Run Code Online (Sandbox Code Playgroud)

https://www.tehplayground.com/IvfOu20JRccc8Cuc