使用Pear的RPN库处理工资计算公式

王朝other·作者佚名  2007-01-11
窄屏简体版  字體: |||超大  

工资系统中通常都有一个工资计算公式的定义。例如 实发=应发-应扣 等等。要计算这样的表达式,传统的方法就是用逆波兰表达式解析它。

下面介绍一个简单的方法来实现计算。

使用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() 等等。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航