使用Pear的RPN库处理工资计算公式
来源:互联网 发布:qq音乐mac破解版 编辑:程序博客网 时间:2024/05/16 17:10
工资系统中通常都有一个工资计算公式的定义。例如 实发=应发-应扣 等等。要计算这样的表达式,传统的方法就是用逆波兰表达式解析它。
下面介绍一个简单的方法来实现计算。
使用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() 等等。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=777520
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 使用Pear的RPN库处理工资计算公式
- 简单叙述动态公式的工资系统的计算方式
- 简单叙述动态公式的工资系统的计算方式
- 在单元测试中使用EasyMock
- AutoCRUD - PHP 下的透明持久层
- 关于先有鸡还是先有蛋,终于有正确答案了
- 你的公司建立了企业文化了么?没有就看看这个
- 一个“Spring轮子”引发的“血案”(4)
- 使用Pear的RPN库处理工资计算公式
- 编写安全的Symbian C++游戏代码
- 一个“Sprng轮子”引发的“血案”(3)
- 为什么大多数大型网站不是用Java写的
- 使用ESB实现企业应用持续集成
- 几个常用的Ajax库小节
- 收听JavaOne 2006 Community 的Podcast
- 一种实际的MDA方法--Lightweight Domain Specific Modeling
- 一种实际的MDA方法--Lightweight Domain Specific Modeling