数学研发论坛

 找回密码
 欢迎注册
查看: 2781|回复: 45

[原创] 落叶高精度表达式计算器v1.0版

[复制链接]
发表于 2016-12-26 09:39:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?欢迎注册

x
落叶高精度表达式计算器V1.0(32位)版
     本计算器程序是在win7 32位系统上,使用VB6.0开发的,本程序的主要特点是:
1) 高精度,支持万位精度的有理数常用运算;
    包括:加,减,乘,除,乘方,开N次方,三角函数,反三角函数,双曲三角函数,反双曲三角函数等。

2)  表达式运算,本程序没有采用常用计算器的边输入边计算,而是输入完所有数据或算式后,解析表达式,分解运算符和数据,最后在运算出结果。
     点击程序界面上的等于按钮,计算器开始运算。

3) 本计算器的各种运算函数大都是自已所写,没有调用大数库或其它数学库,仅大数开平方调用GMP大数库。
     本计算器的各种子函数是通过定义的一个高精度数据结构接收和返回运算结果,这个高精度数据结构可以定义有符号(整数,小数,科学计数法表示的数),
     函数内部集中对数值,小数点位置,指数进行运算,优点是调用简单,不易出错,可以说比较完善,综合运算能力强。
     这点和大数库的实现不同,
    大数库大都只提供对整数的运算,假如要对有理数运算,
     一:你需要很多的调用前和调用后处理工作,这些工作并不需要很高的知识,但却需要很长时间的调试,它并不会因为你的水平很高而获得很大的时间提升。
     二:很难进行综合运算。当你把某一个函数调顺后,进行综合运算时,会出现很多新的问题。
    高精度数据结构VB定义为:
    Type StrToZx                                       '高精度数的结构头
            ZhFhBz As Boolean                         '正负号标志
            XsdWz As Long                              '小数点右边数字的长度。例1234.567中这个数是3(为什么要这样定义,因为大多的基本运算都是右对齐的,这样定义减少了中间一些不必要的转换)
            JzBz As Integer                              '标记数组存的是什么进制的数(十进制或其它进制数)
            strlen As Long                                '运算数长度
            Zx() As Long                                  '存放运算数的数组
            eE As Long                                    '存放指数
      End Type

4)综合运算,里面的三角函数,用户界面的算式,表达式运算,都是综合运算的体现,综合运算是大量基础运算的集合,中间稍有差错,就会算不出正确答案,里面内容繁琐,这里简单介绍一下。

5)本程序从2015年11月开始试编写,至2016年8月大致完成,开发周期很长,中间代码写了一两万行,从零基础到运行效率,综合效率的初中等水平,主要目的是练习编程,老外的数学软件已很强大,是我不可能相比的,我觉得我的程序如果把程序源码作为大数实例初级学习更合适。

6)程序中函数都具有输入值较验功能,若输入错误,会弹出提示窗口提示那一个函数输入错误。

7)由于本人是初次编程练习,且自身知识的不足,加上精力有限,最后的测试收尾也只是简单测试,里面肯定存在很大的不足和没发现的BUG,请网友们在论坛,或

我的邮箱:wtbzhy@126.com,    微博:qq_34030789,QQ:760701933 中指正,交流。

我若纠错后,会在下载网站更新,并根据您的地址发一份给您,谢谢!

再次欢迎大家使用本计算器,本计算器具有很好的表达式解析功能,会在以后的使用中获得很好的用户体验!


补充内容 (2017-1-1 17:06):
乘方对于正负1的正负指数忘了测试,存在问题!

补充内容 (2017-1-2 14:58):
我的微博主页上的百度网盘下载地址会不断更新,
微博主页为:http://blog.csdn.net/qq_34030789/article/details/53906243

落叶高精度表达式计算器v1.0版.rar

344.15 KB, 下载次数: 25, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2016-12-26 09:44:40 | 显示全部楼层
谢谢你们提醒,现计算器里面已包含VB运行库,不过需要你们安装一下!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2016-12-26 11:42:44 | 显示全部楼层
本帖最后由 happysxyf 于 2016-12-26 11:47 编辑

不错,点个赞,我正在转换你的程序到C语言。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2016-12-28 12:05:07 | 显示全部楼层
本帖最后由 落叶 于 2016-12-28 12:14 编辑

谢谢你的肯定,有不足的地方也大量提出,我看到你也写过计算器程序,并对表达式作出了解析,我猜测你用的是逆波兰表达式进行的解析吧?
我开始写表达式解析时,没有搜到这方面的资料,所以只有自已构思如何解决,
我的思路是:设计一个通用数据结构,用于存放表达式字符串中的数值,函数字符,运算符字符,括号等,并在结构中用特定值标记,识别它们,然后构建这种结构的数组,解析表达式中的各种要素,顺序写入数组,后期处理数组(很关键!),计算时再根据结构中的各种标记作出相应的运算,其中解析表达式字符串我费了很大的力自已写子函数,程序写好后我发现和编译程序的词法解析相似,你可以参考他们现成的程序,另外字符串在解析前一定要作规范化整理(很关键!),否则后面没法算,我看很多人的表达式解析做的不全,应该是这一步没做或做的不好,实际核心计算程序很简单,相关的辅助,巧秒的搭配,清晰的思路很关键,这大概也是很多爱好者突破不了表达式解析的原因吧!三分的技术,七分的调试,即使现在让我在没有源代码的情况下,重新写这个程序,没有三,五个月也不一定能拿下,希望多多交流!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2016-12-28 13:41:12 | 显示全部楼层
假如你破解好了,c语言的我来一份,免得我以后移植麻烦。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2016-12-28 19:14:04 | 显示全部楼层
落叶 发表于 2016-12-28 13:41
假如你破解好了,c语言的我来一份,免得我以后移植麻烦。

表达式解析,最好还是用逆波兰特最简单,速度最快,内存占用最小,我实现表达式计算只要3小时。但是我不会实现三角函数的万位高精度。那些我只实现了加减乘除任意精度,三角函数、对数什么的任意精度我不会。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2016-12-28 19:15:34 | 显示全部楼层
还有我只会C语言,VB一直没学,我只能按照你的功能模仿,除了三角函数对数的任意万位精度实现不了,其他的都好模拟。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2016-12-28 19:17:28 | 显示全部楼层
感谢你提供的你的思路,只是我不知道你的对数函数怎么实现任意精度。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2016-12-28 19:27:20 | 显示全部楼层
逆波兰式是最简单,速度最快,内存占用最小,有优点就有缺点,它的解析要想功能强大难度更高(过于紧密的结构使它的扩展更难),面且我的算法并非自已乱想,里面用的思维,思路都和微软的处理方法类似,曾经我已学过三个月的破解,因从没写过程序,最后没学了,但中间分析执行文件结构对我有很深的影响。才决定用数据结构或数据头(网络传输的基本方法之一)的形式解决这个问题。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2016-12-28 19:33:42 | 显示全部楼层
本帖最后由 落叶 于 2016-12-28 20:45 编辑

/thread-8882-2-1.html这里有我向宝宝请教对数的贴子,我的主题里有对三角函数的学习和分析并实现了一定的实破。三角函数的泰勒展开等计算需要基础的(通用加减乘除等支持),不是大数库的加减乘除,那个需要深加工后才能用,而且还要中间调试协调,没有一个过硬的思路,很难的,实现不了通用运算(要对正负符号,小数,指数,完整的直接或间接支持),你没办法算的,你知道了算法也实现不了(或只能简单实现,没实用价值)。你可以参考我的加法源码,除法源码,其它子程序更复杂。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2019-6-26 09:35 , Processed in 0.060304 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表