我正在使用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>';
答案 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);