Qt扩展-轻量数学公式计算

轻量数学公式计算

  • 一、概述
  • 二、代码结构
  • 三、简单使用
  • 四、解析支持
    • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/856607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux守护进程简介、创建流程、关闭和实例演示

1、什么是守护进程&#xff1f; 守护进程是一个后台运行的进程&#xff0c;是随着系统的启动而启动&#xff0c;随着系统的终止而终止&#xff0c;类似于windows上的各种服务&#xff0c;比如ubuntu上的ssh服务&#xff0c;网络管理服务等都是守护进程。 2、守护进程的创建流…

关于创建String的那点事...

String 首先说明一下&#xff0c;本人是前端小学生级别的菜鸡&#xff0c;吐槽的话请口下留情&#xff0c;在评论区指出错误或者补充不足&#xff0c;我会很喜欢&#xff0c;互喷不会进步&#xff0c;相互指点才会。。。。谢谢大家啦 目录 字面量方式构造函数方式区别 等号判…

如何为自己的项目生成changelog

背景 在github上看到人家的更新日志感觉很cool&#xff0c;怎么能给自己项目来一套呢 环境信息 tdstdsdeMacBook-Pro demo-doc % node -v v14.18.1 tdstdsdeMacBook-Pro demo-doc % npm -v 6.14.15硬件信息 型号名称&#xff1a;MacBook Pro版本&#xff1a; 12.6.9芯片&…

活出属于自己的人生

背景 24年高考帷幕落下&#xff0c;一场新的思考与选择悄然来临。对于每一位高考考生&#xff0c;学校和专业都是开启大学新生活的两个前置必选项。但有时候“鱼与熊掌不可兼得”&#xff0c;在分数受限的条件下&#xff0c;是选择一个心仪的专业还是选择一个知名度更高的学校…

QT自定义标题栏窗口其二:实现拖动及可拉伸效果 + 顶部全屏/侧边半屏

1、效果 2、核心代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent<

yolov10训练自己的数据集(没有显卡的替代方案)

1.没有显卡的替代方案 robflow https://github.com/tensorflow/models/tree/master/official 模型训练替代方案&#xff1a;嘉楠开发者社区

基于鲸鱼优化的DSN弱栅栏覆盖算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 for t1:Itersfor i1:Num%目标函数更新[pa(i),fgai] fitness(xwoa(…

全网最全!25届最近5年上海大学自动化考研院校分析

上海大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、历年真题PDF 七、初试大纲复试大纲 八、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试科目…

Linux计划任务与日志

计划任务 主要用于完成一些周期性任务及定时任务&#xff0c;Windows中也有该功能&#xff1a; 单次调度执行 yum install -y at安装at工具&#xff0c;systemctl start atd启动服务&#xff0c;使用方法为at 选项 时间 执行内容时间可以自由设置&#xff0c;开启的栏目中输…

【SpringBoot + Vue 尚庭公寓实战】地区信息管理接口实现(九)

【SpringBoot Vue 尚庭公寓实战】地区信息管理接口实现&#xff08;九&#xff09; 文章目录 【SpringBoot Vue 尚庭公寓实战】地区信息管理接口实现&#xff08;九&#xff09;1、业务说明2、数据逻辑模型3、接口实现3.1、查询省份信息列表3.2、根据省份ID查询城市信息列表3…

AGI|以ChatGPT为例,浅析AI究竟能干什么?

目录 一、前言 二、ChatGPT 三、Prompt Engineering 四、神经网络 五、后记 一、前言 当一个新事物的出现&#xff0c;最好的办法就是了解它出现的背景&#xff0c;发展的历史。 当ChatGPT出现在我们面前&#xff0c;多轮对话能力让人震惊&#xff0c;仿佛机器真的可以&qu…

前端科举八股文-REACT篇

前端科举八股文-REACT篇 vue和react有和异同&#xff1f;useEffect中为什么不能使用异步函数&#xff1f;useEffect和useLayoutEffect的区别react的生命周期&#xff1f;state和props的区别&#xff1f; 讲讲你的理解&#xff1f;受控组件和非受控组件的区别讲一下你理解的reac…

vue动态绑定class的几种方式

第一种 基础用法 / <template><div :class"active"></div> </template><script setup> import { ref } from "vue"; const active ref(true); </script><style></style>第二种&#xff1a;三元运算法 …

GPT 大模型应用开发概览

随着大模型的风靡&#xff0c;越来越多的企业希望使用大模型来提高自己的服务能力&#xff0c;即在自己的软件中集成大模型的能力&#xff0c;希望让大模型解决一些特定的问题。 大模型的应用开发&#xff0c;其本质上是提示词工程&#xff0c;如何组好提示词&#xff0c;直接…

【Python的随机数汇总】

​我们写python代码的时候&#xff0c;很少能用得上随机数&#xff0c;但是随机数有很多妙用。例如&#xff0c;在我们做测试数据集的时候&#xff0c;可以构建一个随机的dataframe&#xff1b; 或者在保存数据的时候&#xff0c;可以在每条数据前插入一列作为&#xff0c;不重…

ASP .Net Core创建一个httppost请求并添加证书

ASP .Net Core创建一个httppost请求并添加证书 创建.net Core程序&#xff0c;使用自签名证书&#xff0c;可以处理https的get和post请求。 创建证书 创建自签名证书的流程可以在这里查看&#xff1a; https://blog.csdn.net/GoodCooking/article/details/139815278创建完毕…

充电学习— 9、Typec Pd

GND&#xff1a;线缆接地 TX RX&#xff1a;数据流data传输&#xff0c;支持2.0 3.0 speed兼容 VBUS&#xff1a;线缆cable电源&#xff0c;bus power CC&#xff1a;电缆cable的连接、方向、角色检测和当前模式的配置通道&#xff1b; 有emark时&#xff0c; 一个成为VCONN&am…

Aidlux 1.4 部署homeassistant core 2024.6实录

1 Aidlux 安装 Index of /apk/ (aidlux.com) 基于debain 10.1&#xff0c;改不了内核参数用不了docker&#xff0c;用initd管理而不是systemd&#xff0c;阉割版系统很多安装依赖项要自己摸索补全。 # 1 由于您的系统使用的是 SysVinit 而不是 systemd&#xff0c;更改时区。…

易基因:MeRIP-seq等揭示RNA m6A去甲基化酶调控植物雄性不育的分子机制 | 科研速递

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 水稻是全球重要的农作物&#xff0c;也是单子叶植物模型。在水稻中&#xff0c;N6-甲基腺苷&#xff08;m6A&#xff09;mRNA修饰对植物的发育和胁迫响应至关重要。OsFIP37作为m6A甲基化…

线程间通信(生产者和消费者案例)

一、传统的线程间通信的方式 使用 Object: synchronized&#xff1a;阻塞锁 wait()&#xff1a;阻塞当前队列 notifyAll()&#xff1a;唤醒所有阻塞队列 package ProduceAndConsumer;/** Auther:生产者消费者案例1* Date:2024/6/20* Description:qinhao* VERSON:1.8*/public…