工資系統中通常都有乙個工資計算公式的定義。例如 實發=應發-應扣 等等。要計算這樣的表示式,傳統的方法就是用逆波蘭表示式解析它。
下面介紹乙個簡單的方法來實現計算。
使用php的pear庫中的rpn.php。用法如下
<?
include 'include/pear/rpn.php';
//$expression = "(2^3)+sin(30)-(!4)+(3/4)";
$expression = "(2.33*6)";
$rpn = new math_rpn();
echo $rpn->calculate($expression,'deg',false);
?>
也就是說先把實發=應發-應扣 這個公式裡面的每一項替換成具體的數值,然後計算得到他的值。
rpn支援的運算符號有
var $_operation = array (
'(' => array ('left bracket', 0),
')' => array ('right bracket', 1),
'+' => array ('sum', 1, 2, '_sum'),
'-' => array ('difference', 1, 2, '_difference'),
'*' => array ('multiplication', 2, 2, '_multiplication'),
'/' => array ('division', 2, 2, '_division'),
'r' => array ('root', 3, 2, '_root'),
'^' => array ('power', 3, 2, '_power'),
'sin' => array ('sine', 3, 1, '_sin'),
'cos' => array ('cosine', 3, 1, '_cos'),
'tan' => array ('tangent', 3, 1, '_tan'),
'asin' => array ('asine', 3, 1, '_asin'),
'acos' => array ('acosine', 3, 1, '_acos'),
'atan' => array ('atangent', 3, 1, '_atan'),
'sqrt' => array ('square root', 3, 1, '_sqrt'),
'exp' => array ('power of e', 3, 1, '_exp'),
'log' => array ('logarithm', 3, 1, '_log'),
'ln' => array ('natural logarithm', 3, 1, '_ln'),
'e' => array ('power of 10', 3, 1, '_e'),
'abs' => array ('absolute value', 3, 1, '_abs'),
'!' => array ('factorial', 3, 1, '_factorial'),
'pi' => array ('value of pi', 4, 0, '_const_pi'),
'e' => array ('value of e', 4, 0, '_const_e'),
'mod' => array ('modulo', 3, 2, '_mod'),
'div' => array ('integer division', 3, 2, '_div'),
);當然,我們可以新增自己的函式,例如計算稅率的tax() 等等。
使用Pear的RPN庫處理工資計算公式
工資系統中通常都有乙個工資計算公式的定義。例如 實發 應發 應扣 等等。要計算這樣的表示式,傳統的方法就是用逆波蘭表示式解析它。下面介紹乙個簡單的方法來實現計算。使用php的pear庫中的rpn.php。用法如下 include include pear rpn.php expression 2 3...
使用Pear的RPN庫處理工資計算公式
工資系統中通常都有乙個工資計算公式的定義。例如 實發 應發 應扣 等等。要計算這樣的表示式,傳統的方法就是用逆波蘭表示式解析它。下面介紹乙個簡單的方法來實現計算。使用php的pear庫中的rpn.php。用法如下 include include pear rpn.php expression 2 3...
使用Pear的RPN庫處理工資計算公式
工資系統中通常都有乙個工資計算公式的定義。例如 實發 應發 應扣 等等。要計算這樣的表示式,傳統的方法就是用逆波蘭表示式解析它。下面介紹乙個簡單的方法來實現計算。使用php的pear庫中的rpn.php。用法如下 include include pear rpn.php expression 2 3...