如何将数字四舍五入到最接近的 10?

发布于 2024-08-09 00:49:50 字数 92 浏览 4 评论 0原文

php 中如何将数字四舍五入到最接近的 10?

假设我有 23,我将使用什么代码将其四舍五入为 30

How can we round off a number to the nearest 10 in php?

Say I have 23, what code would I use to round it off to 30?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(16

小镇女孩 2024-08-16 00:49:50

floor()将会下降。

ceil()将会上升。

默认情况下,round() 将转到最近的值。

除以 10,进行 ceil,然后乘以 10 以减少有效数字。

$number = ceil($input / 10) * 10;

编辑:我已经这样做了很长时间..但 TallGreenTree 的答案更干净。

floor() will go down.

ceil() will go up.

round() will go to nearest by default.

Divide by 10, do the ceil, then multiply by 10 to reduce the significant digits.

$number = ceil($input / 10) * 10;

Edit: I've been doing it this way for so long.. but TallGreenTree's answer is cleaner.

逆光飞翔i 2024-08-16 00:49:50
round($number, -1);

这会将 $number 舍入到最接近的 10。如果需要更改舍入模式,您还可以传递第三个变量。

更多信息在这里: http://php.net/manual/en/function.round.php

round($number, -1);

This will round $number to the nearest 10. You can also pass a third variable if necessary to change the rounding mode.

More info here: http://php.net/manual/en/function.round.php

So要识趣 2024-08-16 00:49:50

我实际上正在寻找一个可以四舍五入到最近的变量的函数,并且这个页面不断出现在我的搜索中。因此,当我最终自己编写了该函数时,我想我会将其发布在这里供其他人查找。

该函数将舍入到最接近的变量:

function roundToTheNearestAnything($value, $roundTo)
{
    $mod = $value%$roundTo;
    return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);
}

此代码:

echo roundToTheNearestAnything(1234, 10).'<br>';
echo roundToTheNearestAnything(1234, 5).'<br>';
echo roundToTheNearestAnything(1234, 15).'<br>';
echo roundToTheNearestAnything(1234, 167).'<br>';

将输出:

1230
1235
1230
1169

I was actually searching for a function that could round to the nearest variable, and this page kept coming up in my searches. So when I finally ended up writing the function myself, I thought I would post it here for others to find.

The function will round to the nearest variable:

function roundToTheNearestAnything($value, $roundTo)
{
    $mod = $value%$roundTo;
    return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);
}

This code:

echo roundToTheNearestAnything(1234, 10).'<br>';
echo roundToTheNearestAnything(1234, 5).'<br>';
echo roundToTheNearestAnything(1234, 15).'<br>';
echo roundToTheNearestAnything(1234, 167).'<br>';

Will output:

1230
1235
1230
1169
沒落の蓅哖 2024-08-16 00:49:50

这个问题的答案有很多,也许每个答案都会给你你想要的答案。但正如 @TallGreenTree 提到的,有一个函数可以实现这一点。

但@TallGreenTree 的答案的问题是它不会向上舍入,而是四舍五入到最接近的 10。要解决此问题,请在您的数字中添加 +5 以便向上舍入。如果要向下舍入,请执行 -5

因此,在代码中:

round($num + 5, -1);

您不能使用舍入模式进行舍入,因为它只舍入分数而不是整数。

如果您想四舍五入到最接近的 100,则应使用 +50

There are many anwers in this question, probably all will give you the answer you are looking for. But as @TallGreenTree mentions, there is a function for this.

But the problem of the answer of @TallGreenTree is that it doesn't round up, it rounds to the nearest 10. To solve this, add +5 to your number in order to round up. If you want to round down, do -5.

So in code:

round($num + 5, -1);

You can't use the round mode for rounding up, because that only rounds up fractions and not whole numbers.

If you want to round up to the nearest 100, you shoud use +50.

枫以 2024-08-16 00:49:50

div 除以 10,然后使用 ceil,然后乘以 10

http://php.net/manual/en /function.ceil.php

div by 10 then use ceil then mult by 10

http://php.net/manual/en/function.ceil.php

轻拂→两袖风尘 2024-08-16 00:49:50

我们可以通过 round 进行“欺骗”

$rounded = round($roundee / 10) * 10;

我们还可以避免使用浮点除法 编辑

function roundToTen($roundee)
{
  $r = $roundee % 10;
  return ($r <= 5) : $roundee - $r : $roundee + (10 - $r);
}

:我不知道(并且网站上没有详细记录)round 现在支持“负”精度,这样就可以更方便的

$round = round($roundee, -1);

再次使用Edit:如果总是想向上取整,可以尝试

function roundUpToTen($roundee)
{
  $r = $roundee % 10;
  if ($r == 0)
    return $roundee;
  return $roundee + 10 - $r;    
}

We can "cheat" via round with

$rounded = round($roundee / 10) * 10;

We can also avoid going through floating point division with

function roundToTen($roundee)
{
  $r = $roundee % 10;
  return ($r <= 5) : $roundee - $r : $roundee + (10 - $r);
}

Edit: I didn't know (and it's not well documented on the site) that round now supports "negative" precision, so you can more easily use

$round = round($roundee, -1);

Edit again: If you always want to round up, you can try

function roundUpToTen($roundee)
{
  $r = $roundee % 10;
  if ($r == 0)
    return $roundee;
  return $roundee + 10 - $r;    
}
小巷里的女流氓 2024-08-16 00:49:50

到最接近的 10 ,应如下

$number = ceil($input * 0.1)/0.1 ;

to nearest 10 , should be as below

$number = ceil($input * 0.1)/0.1 ;
盛夏已如深秋| 2024-08-16 00:49:50

尝试

round(23, -1);

Try

round(23, -1);

听风吹 2024-08-16 00:49:50
$value = 23;
$rounded_value = $value - ($value % 10 - 10);
//$rounded_value is now 30
$value = 23;
$rounded_value = $value - ($value % 10 - 10);
//$rounded_value is now 30
dawn曙光 2024-08-16 00:49:50

我想四舍五入到最大数字位的下一个数字(有名字吗?),所以我做了以下函数(在 php 中):

//Get the max value to use in a graph scale axis, 
//given the max value in the graph
function getMaxScale($maxVal) {
    $maxInt = ceil($maxVal);
    $numDigits = strlen((string)$maxInt)-1; //this makes 2150->3000 instead of 10000
    $dividend = pow(10,$numDigits);
    $maxScale= ceil($maxInt/ $dividend) * $dividend;
    return $maxScale;
}

I wanted to round up to the next number in the largest digits place (is there a name for that?), so I made the following function (in php):

//Get the max value to use in a graph scale axis, 
//given the max value in the graph
function getMaxScale($maxVal) {
    $maxInt = ceil($maxVal);
    $numDigits = strlen((string)$maxInt)-1; //this makes 2150->3000 instead of 10000
    $dividend = pow(10,$numDigits);
    $maxScale= ceil($maxInt/ $dividend) * $dividend;
    return $maxScale;
}
第几種人 2024-08-16 00:49:50

试试这个:

ceil($roundee / 10) * 10;

Try this:

ceil($roundee / 10) * 10;
夏の忆 2024-08-16 00:49:50

我的第一个冲动是在谷歌上搜索“php math”,我发现有一个名为“round()”的核心数学库函数,这可能就是您想要的。

My first impulse was to google for "php math" and I discovered that there's a core math library function called "round()" that likely is what you want.

凉城 2024-08-16 00:49:50

对于那些想要使用原始 SQL 而不使用 php、java、python 等的人来说。
设置 SQL_SAFE_UPDATES = 0;
UPDATE db.table SET value=ceil(value/10)*10 其中值不像“%0”;

For people who want to do it with raw SQL, without using php, java, python etc.
SET SQL_SAFE_UPDATES = 0;
UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';

老子叫无熙 2024-08-16 00:49:50
Hey i modify Kenny answer and custom it not always round function now it can be ceil and floor function

function roundToTheNearestAnything($value, $roundTo,$type='round')
    {
        $mod = $value%$roundTo;
        if($type=='round'){
            return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);
        }elseif($type=='floor'){
            return $value+($mod<($roundTo/2)?-$mod:-$mod);
        }elseif($type=='ceil'){
            return $value+($mod<($roundTo/2)?$roundTo-$mod:$roundTo-$mod);
        }

    }

echo roundToTheNearestAnything(1872,25,'floor'); // 1850<br>
echo roundToTheNearestAnything(1872,25,'ceil'); // 1875<br>
echo roundToTheNearestAnything(1872,25,'round'); // 1875
Hey i modify Kenny answer and custom it not always round function now it can be ceil and floor function

function roundToTheNearestAnything($value, $roundTo,$type='round')
    {
        $mod = $value%$roundTo;
        if($type=='round'){
            return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod);
        }elseif($type=='floor'){
            return $value+($mod<($roundTo/2)?-$mod:-$mod);
        }elseif($type=='ceil'){
            return $value+($mod<($roundTo/2)?$roundTo-$mod:$roundTo-$mod);
        }

    }

echo roundToTheNearestAnything(1872,25,'floor'); // 1850<br>
echo roundToTheNearestAnything(1872,25,'ceil'); // 1875<br>
echo roundToTheNearestAnything(1872,25,'round'); // 1875
夜还是长夜 2024-08-16 00:49:50

这可以使用 PHP 'fmod' 函数轻松完成。下面的代码特定于 10,但您可以将其更改为任何数字。

$num=97;
$r=fmod($num,10);
$r=10-$r;
$r=$num+$r;
return $r;

输出:100

This can be easily accomplished using PHP 'fmod' function. The code below is specific to 10 but you can change it to any number.

$num=97;
$r=fmod($num,10);
$r=10-$r;
$r=$num+$r;
return $r;

OUTPUT: 100

梦在夏天 2024-08-16 00:49:50

试试这个......传入要四舍五入的数字,它会四舍五入到最接近的十分位。希望它有帮助......

round($num, 1);

Try this......pass in the number to be rounded off and it will round off to the nearest tenth.hope it helps....

round($num, 1);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文