所以这是我的情况。我有几个数字,我想要舍入到最近和最小倍数10。
例如,51到59之间的值应该舍入到50.
Input = 59 = >Respose = 50
Input = 51 => Respose = 50
我试过了
$number = round(53, -1);
这将是50,这是我想要的正确,但如果我尝试56,它会给我60.但在这里,我期待50.可以有人帮助我吗?
接受的答案(如果有人正在阅读问题)
楼层($ number / 10)* 10
但是,它给出了十进制值,我将其舍入并更改为
$amount = (int)floor($amount / 10)*10;
答案 0 :(得分:6)
改用floor
;首先除以10然后将截断的结果乘以:
$number = floor($number / 10) * 10
使用$number = round($number - 5, -1);
等解决方案可能会导致浮点边缘情况出现问题。 (有趣的是,早期的Java实现是如何做到的,带来了灾难性的结果。)
答案 1 :(得分:2)
向下舍入:
$x = floor($x/10) * 10;
总结:
$x = ceil($x/10) * 10;
舍入到最接近(向上或向下):
$x = round($x/10) * 10;
答案 2 :(得分:2)
您必须将您的号码除以10
,然后floor,再乘以10:
<?php
function floor10($input) {
$input = $input/10;
$input = floor($input);
$input = 10*$input;
return $input;
}
echo floor10(51); // echoes 50
echo floor10(59); // echoes 50
答案 3 :(得分:0)
使用int删除devide后的小数点,然后使用10删除mul (INT)($ num个/ 10)* 10
答案 4 :(得分:0)
您不需要任何函数即可进行简单的数学计算。
/* rating percentage to nearest 10 */
$rating_percentage=92; //if 92 output will be 90
$r=$rating_percentage%10; //get the remainder after dividing by number 10
$rating_percentage=$rating_percentage-$r; //deduct the remainder to make the number perfectly dividible by 10
$r=$r>=5?10:0; //if remainder is greater or equal to 5 make it 10 else 0
$rating_percentage=$rating_percentage+$r;//add the updated remainder back to number
print_r("<pre>");
print_r($rating_percentage); //output 90 for 91-94 and 100 for 96-100
print_r("</pre>");