<?php
/**
* 任意兩個數的數學計算(+、-、*、/)支持擴展其他運算符 詳細請閱讀 PHP BC數學函數
* @param float|int $left_operand 左操作數
* @param float|int $right_operand 右操作數
* @param string $operator 運算符
* @param int $scale 結果保留小數點精度
* @return float
*/
function float_calculate($left_operand,$right_operand,$operator='+',$scale=2){
if(!$left_operand || is_numeric($left_operand) || !$right_operand || is_numeric($right_operand)) return false;
switch($operator){
case '-':
$func='bcsub';
break;
case '*':
$func='bcmul';
break;
case '/':
$func='bcdiv';
break;
default:
$func='bcadd';
break;
}
return $func($left_operand,$right_operand,$scale);
}
/**
* 多個數字的數學計算(+、-、*、/) 支持擴展其他運算符 詳細請閱讀 PHP BC數學函數
* @param array $params 要計算的數字數組按順序依次用運算符連接計算 例 [10,5,2] => 10-5-2
* @param string $operator 運算符
* @param int $scale 結果保留小數點精度
* @return float
*/
function more_float_calculate($params,$operator='+',$scale=2){
if(!is_array($params) || count($params)<2) return false;
foreach($params as $item){
if(is_numeric($item)) return false;
}
switch($operator){
case '-':
$func='bcsub';
break;
case '*':
$func='bcmul';
break;
case '/':
$func='bcdiv';
break;
default:
$func='bcadd';
break;
}
$length=count($params);
$result=$func($params[0],$params[1],$scale);
if($length>2){
for($i=2;$i<$length;$i++){
$result=$func($result,$params[$i],$scale);
}
}
return $result;
}
PHP 浮點數計算問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.