java公式解析引擎_表达式解析引擎的设计

http://blog.csdn.net/hunkcai/article/details/6125963

前言

表达式的计算是一个一般性的问题。在报表领域,经常会出现支持计算公式的需求。MS Office Excel中的函数计算就是一个很好的参考例子。

本文提供一个表达式引擎的设计方案,能够满足报表领域的复杂计算要求。

一个良好的表达式引擎应该支持基本的二元运算和函数调用,而且二元运算能够嵌套函数调用,函数调用也能够嵌套二元运算,比如:

例子1:=2>1&&((Num(1)+2*Num((Num(2)+2)*3/Num(2)))/2>0||2>1)&&0>1,执行结果:0

例子2:=Switch(Num(1),是, Num(0),否),执行结果:是

例子3:=Switch(20<10,1 ,20>=10, 20 + 20*0.1),执行结果:22

当然,实际的应用里,表达式中要支持变量的绑定,比如:

例子1(计算税后金额):=Fields!数量.Value * Fields!单价.Value*(1 + Fields!税率.Value / 100)

例子2(不同价格不同税后金额):=Fields!数量.Value*Fields!单价.Value*Switch(Fields!单 价.Value<100, 1.1, Fields!单价.Value<500, 1.08, Fields!单价.Value<800, 1.07)

至于常用的一元运算,能

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值