【问题标题】:php round up / ceil merge mysql AVG()php 汇总 / ceil 合并 mysql AVG()
【发布时间】:2011-12-30 16:24:44
【问题描述】:

或显示平均值我有这个:

$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 不适合我!!

【问题讨论】:

    标签: php mysql rounding ceil


    【解决方案1】:

    你需要这样做:

    $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;
    

    干杯

    【讨论】:

    • 好一个;-) 然后在 MySQL 中你可以这样做 - SELECT CEILING(x * 2) / 2;
    • 确实,这只是一个数学运算
    【解决方案2】:

    这个功能也很有帮助

    // 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      相关资源
      最近更新 更多