轻量数学公式计算
- 一、概述
- 二、代码结构
- 三、简单使用
- 四、解析支持
- 1. 操作数
- 2. 运算符
- 3. 括号
一、概述
这个是我写得简单的一个数学计算公式工具。easy-math-parser 是一个用C++编写的简单工具包,支持四个操作字符串的计算工具,灵感来自Muparser。
在这个小工具中,我实现了一个更简单、更高效的解析器。支持四种运算:加法、减法、乘除和求幂。当然,您还可以扩展其他二元运算符,例如对数。同时也是一个支持括号优先的表达式。
Github:https://github.com/SunStorm2018/easy-math-parser
二、代码结构
- root folder
- common
- muparser_engine
- parser_qt : 使用 qt5 编写的.
- parser_std : 使用 标准 c++ 编写的.
- muparser_engine : Muparser 测试api.
- gui_test : gui测试工具.
- test_data : 测试数据.
- main.cpp
三、简单使用
使用 easy_parser_qt 如下:
// 1. include the header
#include <parser_qt/easy_parser_qt.h>
// 2. init the error info item. this is optional.
ERRORINFO_ST info = EasyParserQt::E000;
// 3. eval the math formula result.
double zhy_res = EasyParserQt::eval("1+2.2*-2*4-54^3+43", info);
使用 easy_parser_std 如下:
// 1. include the header
#include <parser_qt/easy_parser_std.h>
// 2. init the error info item. this is optional.
ZHYSTD::ERRORINFO_ST zhy_info = ZHYSTD::EasyParserStd::E000;
// 3. eval the math formula result.
double zhy_res = ZHYSTD::EasyParserStd::eval("1+2.2*-2*4-54^3+43", info);
四、解析支持
在这个工具箱中,字符串被分为两个有效的语素,一个是操作数,另一个是运算符。
操作数是有效的数字类型,即支持普通数字表示和科学计算的数字。
运算符支持五种类型的符号,并支持将括号作为优先级计算器。
1. 操作数
在这个工具包中,为了加快处理速度,操作数是双精度浮点类型,即双精度类型,并且不做区分整数和浮点数的工作。
2. 运算符
运算符 | 功能 | 解释 | 优先级 |
---|---|---|---|
+ | 加号 | 两数相加 | 0 |
- | 减号 | 两数相减 | 0 |
* | 乘号 | 两数相乘 | 1 |
/ | 除号 | 两数相除 | 1 |
^ | 指数 | 指数运算 | 2 |
3. 括号
操作符 | 功能 | 解释 | 优先级 |
---|---|---|---|
( ) | 括号 | 运算仅限于计算括号中的数据 | 3 |