php中的圆整数

时间:2017-09-22 06:41:07

标签: php codeigniter codeigniter-3

我正在使用php round登录我从数据库中得到一些值,该值就像

  

1520000

现在我想要围绕或转换成

  

1550000或1600000使用php

请帮帮我

这是我的代码

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

echo roundToTheNearestAnything(1520000, 10).'<br>';

4 个答案:

答案 0 :(得分:0)

你很接近,但你的roundTo值不对:

function roundToTheNearestAnything($value, $roundTo)
{
    $mod = $value % $roundTo;
    return $value + ( $roundTo - $mod );
}

echo roundToTheNearestAnything(1520000, 100000);

除了这只是总是四舍五入,但根据你所展示的预期值,它看起来可能就是你所追求的。看起来回答的其他人一定想到了同样的事情。如果你真的想要一个向上或向下舍入的函数,那么这将起作用:

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

echo roundToTheNearestAnything(1520000, 100000);

echo '<br />';

echo roundToTheNearestAnything(1550000, 100000);

echo '<br />';

echo roundToTheNearestAnything(1570000, 100000);

答案 1 :(得分:0)

对于$ x,您必须传递要舍入的数字。 如果$ n = 1560000且$ x = 5000,您将得到1565000。

<?php
$n = 1520000;
echo roundUpToAny($n);
function roundUpToAny($n,$x=50000) {
    return round(($n+$x/2)/$x)*$x;
}
?>

输入: 1520000

输出: 1550000

输入: 1560000

输出:1600000

答案 2 :(得分:0)

正如所指出的,我以前的版本只舍入到小数位,所以......

function roundTo ( $number, $round ){
    return round($number/$round)*$round;
}
echo roundTo(1520000, 50000).PHP_EOL;
echo roundTo(1560000, 50000).PHP_EOL;
echo roundTo(1590000, 50000).PHP_EOL;
echo roundTo(1520000, 100000).PHP_EOL;
echo roundTo(1490000, 100000).PHP_EOL;

...给出

1500000
1550000
1600000
1500000
1500000

如果您希望它始终向上舍入 - 然后将round替换为ceil,如果您始终要将其舍入,请使用floor

答案 3 :(得分:0)

尝试以下代码, 如果$ value = 1520000且$ roundTo = 30000将给出1550000并且$ value = 1520000并且$ roundTo = 80000将给出$ 1600000

function roundToTheNearestAnything($value, $roundTo)
{
    $rounded_value = $value - ($value % 10 - $roundTo);
    return $rounded_value;
}


echo roundToTheNearestAnything(1520000, 30000);