簡體   English   中英

PHP Round-aprox轉換為小數

[英]Php Round - aprox to decimals

我有平均的下一個代碼。

    function array_average2(){
    $args = func_get_args();
    if(isset($args[0])){
        if(is_array($args[0])){
            $ret = (array_sum($args[0]) / count($args[0]));
        }else{
            $ret = (array_sum($args) / func_num_args());
        }
    }else{
        $ret = 0;
    }

$ret2=0.01 * (int)($ret*100);
return $ret2;
}

i need php round to rezult next:
$ret=1.23 - i need 1
$ret=6.23 - i need 6
$ret=6.70 - i need 7
$ret=5.50 - i need 5.50
$ret=5.49 - i need 5

結論:如果小數位緊接0.50為下一個值,則為下一個值;否則為小數但為stai固定為0.50的結論。 5 + 6 = 5.50 ..不變

好利用PHP中的round()並應用此邏輯

function array_average2(){
    $args = func_get_args();
    if(isset($args[0])){
        if(is_array($args[0])){
            $ret = (array_sum($args[0]) / count($args[0]));
        }else{
            $ret = (array_sum($args) / func_num_args());
        }
    }else{
        $ret = 0;
    }

    $ret2=0.01 * (int)($ret*100);
    $str = strval($ret);
    if(strpos($str,'.50')!==false)
    {
        return $ret;
    }
    else
    {
        return round($ret2);
    }
}

可能不是最好的,但它應該可以工作:

$string = (string)$ret;

if (substr($string, -3) != '.50') {
    $ret = round($ret);
}

要么

$string = (string)$ret;

if (strrpos($string, '.50') !== 0) {
    $ret = round($ret);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM