自动计算数值的方法和装置的制作方法

文档序号:6340817阅读:212来源:国知局

专利名称::自动计算数值的方法和装置的制作方法
技术领域
:本发明涉及公式计算,具体而言,涉及一种自动计算数值的方法和装置。技术背景随着应用系统的广泛使用,根据系统提供的计算公式设计器,客户自己设置计算公式,得出相关的结果并加以应用越来越广泛。并且公式的复杂度也越来越高,如何能提供一种比较简单,切实可行的公式解析算法,就显得比较重要。目前计算公式的复杂程度概况描述如下1、支持四则运算2、支持逻辑运算3、支持比较运算4、支持公式嵌套公式解析计算公式主要由以下办法1、采用目前主流语言提供的公式引擎解析计算公式,这种算法可以解决一部分客户的业务需求,但对客户要求比较复杂,并且数据来源比较复杂的公式来说,还是很难解决的。2、采用遍历字符串的方式,获取字符串中的各种运算符号和运算值,根据运算符号的不同,采取递归的算法依次获取计算,得到最终的结果。这种算法可以满足客户的全部业务场景,但对字符串解析要求程度很高,还要用到入栈出栈操作,所有不慎可能导致计算结果错误。因此,需要一种新的公式计算方式,能够针对复杂的数据进行解析,并能够降低解析的复杂性,防止计算出错。
发明内容本发明所要解决的技术问题在于,提供一种新的公式计算方式,能够针对复杂的数据进行解析,并能够降低解析的复杂性,防止计算出错。有鉴于此,本发明提供一种自动计算数值的方法,包括步骤102,通过解析器,将公式解析为元素和运算符;步骤104,获取所述元素的值;步骤106,使用所述元素的值结合所述运算符进行计算,以获取所述公式的结果。通过该技术方案,将公式解析为元素和运算符后,能够有效率地对公式进行计算。在上述技术方案中,优选地,在所述步骤102中,通过正则表达式对所述公式进行解析。在上述技术方案中,优选地,在所述步骤102中,还使用特殊字符替代所述元素,与所述运算符组成算式表达式;在所述步骤106中,将所述元素的值替代所述算式表达式中的所述特殊字母,计算所述算式表达式以获取所述公式的结果。在上述技术方案中,优选地,所述元素包括常量、参数、函数和/或嵌套的公式,所述运算符包括加、减、乘、除和/或括号。在上述技术方案中,优选地,在所述步骤104中,在所述元素包括所述嵌套的公式时,将所述嵌套的公式返回所述步骤102。本发明还提供一种自动计算数值的装置,包括公式解析模块,将公式解析为元素和运算符;元素取值模块,获取所述元素的值;公式计算模块,使用所述元素的值结合所述运算符进行计算,以获取所述公式的结果。通过该技术方案,将公式解析为元素和运算符后,能够有效率地对公式进行计算。在上述技术方案中,优选地,所述公式解析模块通过正则表达式对所述公式进行解析。在上述技术方案中,优选地,所述公式解析模块还使用特殊字符替代所述元素,与所述运算符组成算式表达式;所述公式计算模块将所述元素的值替代所述算式表达式中的所述特殊字母,计算所述算式表达式以获取所述公式的结果。在上述技术方案中,优选地,所述元素包括常量、参数、函数和/或嵌套的公式,所述运算符包括加、减、乘、除和/或括号。在上述技术方案中,优选地,在所述元素包括所述嵌套的公式时,所述元素取值模块将所述嵌套的公式返回给所述公式解析模块。通过以上技术方案,可以实现一种自动计算数值的方法和装置,通过巧用元素分离法把计算公式字符串分为两部分,计算表达式和元素,首先得出元素的值,然后调用计算表达式得到计算公式的最终结果,较简单实用,易于理解和实现,可以快速的解析计算公式并得到准确的结果。图1是根据本发明的一个实施例的自动计算数值的方法的流程图2是根据本发明的一个实施例的自动计算数值的装置的框图3是根据本发明的一个实施例的自动计算数值的装置的解析过程示意图4是根据本发明的一个实施例的自动计算数值的装置的计算过程示意图5是根据本发明的一个实施例的自动计算数值的方法的流程图。具体实施方式为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。图1是根据本发明的一个实施例的自动计算数值的方法的流程图。如图1所示,有鉴于此,本发明提供一种自动计算数值的方法,包括步骤102,通过解析器,将公式解析为元素和运算符;步骤104,获取所述元素的值;步骤106,使用所述元素的值结合所述运算符进行计算,以获取所述公式的结果。通过该技术方案,将公式解析为元素和运算符后,能够有效率地对公式进行计算。4在上述技术方案中,在所述步骤102中,通过正则表达式对所述公式进行解析。在上述技术方案中,在所述步骤102中,还使用特殊字符替代所述元素,与所述运算符组成算式表达式;在所述步骤106中,将所述元素的值替代所述算式表达式中的所述特殊字母,计算所述算式表达式以获取所述公式的结果。在上述技术方案中,所述元素包括常量、参数、函数和/或嵌套的公式,所述运算符包括加、减、乘、除和/或括号。在上述技术方案中,在所述步骤104中,在所述元素包括所述嵌套的公式时,将所述嵌套的公式返回所述步骤102。图2是根据本发明的一个实施例的自动计算数值的装置的框图。如图2所示,本发明还提供一种自动计算数值的装置200,包括公式解析模块202,将公式解析为元素和运算符;元素取值模块204,获取所述元素的值;公式计算模块206,使用所述元素的值结合所述运算符进行计算,以获取所述公式的结果。通过该技术方案,将公式解析为元素和运算符后,能够有效率地对公式进行计算。在上述技术方案中,所述公式解析模块202通过正则表达式对所述公式进行解析。在上述技术方案中,所述公式解析模块202还使用特殊字符替代所述元素,与所述运算符组成算式表达式;所述公式计算模块206将所述元素的值替代所述算式表达式中的所述特殊字母,计算所述算式表达式以获取所述公式的结果。在上述技术方案中,所述元素包括常量、参数、函数和/或嵌套的公式,所述运算符包括加、减、乘、除和/或括号。在上述技术方案中,在所述元素包括所述嵌套的公式时,所述元素取值模块204将所述嵌套的公式返回给所述公式解析模块202。图3是根据本发明的一个实施例的自动计算数值的装置的解析过程示意图。如图3所示,本实施例中的自动计算数值的装置的公式解析模块公式本质就是一个字符串,不管采用哪种算法解析,最终的计算步骤都要进行代数运算,如简单的四则运算,带括号的四则运算等。根据代数运算的特点,公式解析模块将计算公式可以分为两部分,运算符304和元素302运算符304包括进行代数元素的符号,可以是加、减、乘除、括号等运算符。元素302参与代数运算的字符串,可以是常量、参数、函数、计算公式。图4是根据本发明的一个实施例的自动计算数值的装置的计算过程示意图。如图4所示,本实施例中的自动计算数值的装置中的公式解析模块利用正则表达式分离计算公式源字符串,获取运算符和元素,元素取值模块将元素用特殊的字母表示,如“elementl”,把源字符串变为代数运算字符串元素取值模块根据元素类型不同,采取不同的算法获取元素值,具体如下1、常量元素直接获取数值即可2、表中字段参数元素根据查询条件获取表中数值即可3、内置函数元素调用函数计算方法获取元素值4、逻辑运算元素调用逻辑运算函数,获取元素值5、比较运算元素调用比较运算函数获取元素值6、嵌套公式提前计算公式,根据本算法首先计算嵌套计算公式的值,得到元素值最后,自动计算数值的装置中的公式计算模块由把元素值代入代数运算字符串,调用各种语言直接提供的代数运算函数,得到计算公式结果(如C#可以调用datatable.compare()方法)图5是根据本发明的一个实施例的自动计算数值的方法的流程图。如图5所示,本实施例的自动计算数值的方法的工作流程如下步骤502,进行计算公式字符串的定义某应用系统应发工资计算公式定义如下应发工资=基本工资+绩效工资*绩效系数-扣缴保险数额-扣缴公积金数额,其中,基础数据预置如下工资表权利要求1.一种自动计算数值的方法,其特征在于,包括步骤102,通过解析器,将公式解析为元素和运算符;步骤104,获取所述元素的值;步骤106,使用所述元素的值结合所述运算符进行计算,以获取所述公式的结果。2.根据权利要求1所述的自动计算数值的方法,其特征在于,在所述步骤102中,通过正则表达式对所述公式进行解析。3.根据权利要求1所述的自动计算数值的方法,其特征在于,在所述步骤102中,还使用特殊字符替代所述元素,与所述运算符组成算式表达式;在所述步骤106中,将所述元素的值替代所述算式表达式中的所述特殊字母,计算所述算式表达式以获取所述公式的结果。4.根据权利要求1至3中任一项所述的自动计算数值的方法,其特征在于,所述元素包括常量、参数、函数和/或嵌套的公式,所述运算符包括加、减、乘、除和/或括号。5.根据权利要求4所述的自动计算数值的方法,其特征在于,在所述步骤104中,在所述元素包括所述嵌套的公式时,将所述嵌套的公式返回所述步骤102。6.一种自动计算数值的装置,其特征在于,包括公式解析模块,将公式解析为元素和运算符;元素取值模块,获取所述元素的值;公式计算模块,使用所述元素的值结合所述运算符进行计算,以获取所述公式的结果。7.根据权利要求6所述的自动计算数值的装置,其特征在于,所述公式解析模块通过正则表达式对所述公式进行解析。8.根据权利要求6所述的自动计算数值的装置,其特征在于,所述公式解析模块还使用特殊字符替代所述元素,与所述运算符组成算式表达式;所述公式计算模块将所述元素的值替代所述算式表达式中的所述特殊字母,计算所述算式表达式以获取所述公式的结果。9.根据权利要求6至8中任一项所述的自动计算数值的装置,其特征在于,所述元素包括常量、参数、函数和/或嵌套的公式,所述运算符包括加、减、乘、除和/或括号。10.根据权利要求9所述的自动计算数值的装置,其特征在于,在所述元素包括所述嵌套的公式时,所述元素取值模块将所述嵌套的公式返回给所述公式解析模块。全文摘要本发明提供一种自动计算数值的方法,包括步骤102,通过解析器,将公式解析为元素和运算符;步骤104,获取所述元素的值;步骤106,使用所述元素的值结合所述运算符进行计算,以获取所述公式的结果。本发明还提供一种自动计算数值的装置。通过本发明,将公式解析为元素和运算符后,能够有效率地对公式进行计算。文档编号G06F17/11GK102043758SQ20101061645公开日2011年5月4日申请日期2010年12月30日优先权日2010年12月30日发明者李胜,王丙建申请人:畅捷通软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1