PHP以特定的间隔对小数进行四舍五入


PHP Round a decimalnumber with specific interval

我有一个要在数据库中查找的数字。数据库间隔如下:

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

如果您需要将其精确到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;
}

使用圆角和一些数学运算。

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

或者如果0.02偏移是错误的

round($number/0.04)*0.04