php round up / ceil merge mysql AVG () - PullRequest
       28

php round up / ceil merge mysql AVG ()

2 голосов
/ 30 декабря 2011

или Показать Среднее у меня есть это:

$item = mysql_query("SELECT AVG(top) AS total FROM " . "$config_ccms_prefix" . "news where id='$id'"); 
while ($cms = mysql_fetch_assoc($item)) {
            $avg = ceil(($cms[total]),0.5);
        }
//......

пример: мне нужно округлить, если $ ccms [total] = от 3,4 до 3,5 или от 7,8 до 8 или от 9,3 до 9,5 НО, а не от 9,5 до 10 или от 4,5 до 5. На самом деле, я не уверен, что это возможно.

$ avg не работает для меня !!

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Вам нужно сделать это тогда:

$avg = ceil($cms['total']*2)/2; //result of 

Результаты будут:

1.5 = ceil(1.1*2)/2; //CEIL(2.2) = 3.0 / 2 = 1.5;
1.5 = ceil(1.2*2)/2; //CEIL(2.4) = 3.0 / 2 = 1.5;
1.5 = ceil(1.3*2)/2; //CEIL(2.6) = 3.0 / 2 = 1.5;
1.5 = ceil(1.4*2)/2; //CEIL(2.8) = 3.0 / 2 = 1.5;
1.5 = ceil(1.5*2)/2; //CEIL(3.0) = 3.0 / 2 = 1.5;
2 = ceil(1.6*2)/2; //CEIL(3.2) = 4.0 / 2 = 2;
2 = ceil(1.7*2)/2; //CEIL(3.4) = 4.0 / 2 = 2;
2 = ceil(1.8*2)/2; //CEIL(3.6) = 4.0 / 2 = 2;
2 = ceil(1.9*2)/2; //CEIL(3.8) = 4.0 / 2 = 2;
2 = ceil(2*2)/2; //CEIL(4) = 4.0 / 2 = 2;

Приветствия

0 голосов
/ 30 декабря 2011

Также эта функция может быть полезна

// duplicates Excel's ceiling function
if (!function_exists('ceiling')) {
    function ceiling($number, $significance = 1) {
        return (is_numeric($number) && 
            is_numeric($significance) ) ? 
            (ceil($number / $significance) * $significance) : false;
    }
}
$data = array(1.2, 1.1, 3.5, 3.8, 4, 0.6, 4.1);
foreach ($data as $value) {
    echo $value . ' | ' . ceiling($value, 0.5) . '<br/>';
}

Это приведет к

1.2 | 1.5
1.1 | 1.5
3.5 | 3.5
3.8 | 4
4   | 4
0.6 | 1
4.1 | 4.5
...