舍入到最接近和最小倍数为10

时间:2017-01-16 10:11:46

标签: php laravel

所以这是我的情况。我有几个数字,我想要舍入到最近和最小倍数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;

5 个答案:

答案 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>");