[PHP] 自製金錢分攤函式

近日在工作上應該會需要計算金錢分攤,簡單寫了個 PHP 函式備用。

function shareAmount( $amount , $shares ) {
        $arr = array();
        if ( is_numeric($amount) && is_int($shares) ) {
                $precision = is_int($amount) ? 0 : strlen(substr($amount, strpos($amount, '.')+1));
                for ( $i = $shares; $i > 0; $i-- ) {
                        $val = round( $amount / $i , $precision );
                        array_push( $arr , $val );
                        $amount -= $val;
                }
        }
        return $arr;
}

執行結果大概像這樣:

// var_dump( shareAmount(101,3) );
array(3) {
  [0]=>
  float(34)
  [1]=>
  float(34)
  [2]=>
  float(33)
}

// var_dump( shareAmount(0.5101,3) );
array(3) {
  [0]=>
  float(0.17)
  [1]=>
  float(0.1701)
  [2]=>
  float(0.17)
}

我在資料庫沒看到大數,所以就沒考慮 BC Math,直接用 is_numeric() 了… :p

這篇文章沒有任何 plurk回應,點這裡查看plurk頁面