PHP以特定间隔舍入十进制数

时间:2014-04-23 08:01:54

标签: php rounding

我有一个号码,我想在我的数据库中查找。数据库间隔如下:

0,78
0,82
0,86
0,90
0,94
0,98
1,02
1,06
1,10
1,14

所以这个数字一直加着0.04。

我想查找的数字是这样的:

0,77778
0.91666 
1,14286
1,50000
1,76923

如何将其四舍五入到最接近的0.04?

所以他们看起来像这样:

0,78
0.90 
1,14
1,50
1,78

2 个答案:

答案 0 :(得分:1)

使用圆形和一些数学。

round(($number-0.02)/0.04)*0.04+0.02

或如果0.02班次错误

round($number/0.04)*0.04

答案 1 :(得分:1)

如果你需要使它达到0.04的最接近的倍数,这里有一个完成这项工作的功能:

function round_to_0_04($round)
{
    $int_val = round($round * 100);
    $rest = $int_val % 4;
    $rounded_val = $int_val - $rest;
    return $rounded_val /100;
}

如果数字需要不均匀(从0.02而不是0开始),你应该按如下方式使用:

$number = ...;
round_to_0_04($number - 0.02) + 0.02;

或者只需按如下方式修改功能:

function round_to_0_04_uneven($round)
{
    $round -= 0.02;
    $int_val = round($round * 100);
    $rest = $int_val % 4;
    $rounded_val = $int_val - $rest;
    return $rounded_val /100 + 0.02;
}