万位计算器.docx

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
万位计算器

万位计算器 目录  HYPERLINK \l _摘要 摘要  HYPERLINK \l _设计思路 设计思路  HYPERLINK \l _软件架构 软件架构  HYPERLINK \l _实现原理与过程 实现原理与过程  HYPERLINK \l _软件测试_1 软件测试  HYPERLINK \l _实验心得与感悟 实验心得与感悟  HYPERLINK \l _附件代码 附件代码 摘要 这是一个用java开发的高精度计算器,部署在Android平台上,该计算器支持万位数的运算(但说实话,万位的运算是理论上的,毕竟现实生活中我们能用到百位就很不错了,不过这个计算器还是按照万位的标准来做的),实现了,加、减、乘、除、正弦、余弦、指数幂、对数等一系列常用运算,其中正弦、余弦、指数幂、对数等函数型的运算均采用迈克劳林展开式进行计算,提高了计算效率,同时也增强了计算精度。另外,本计算器利用Poland后缀表达式实现了多项式的运算,使得计算器的人性化程度极大的提高,大大的增加了计算器的实用性。同时,该计算器部署到安卓平台,对于安卓手机应用的比较广泛的今天,(至少以后我自己可以用这个APP来处理我自己的一些日常计算问题,这样的话,虽然计算机组成与原理这门课程结课了,但我的作业并未束之高阁,可以实际用起来),该计算器或许会发挥一定的作用呢,我已经将该计算器的源码放在了GitHub上了,为中国的开源做一份力量,希望我的作品会给别人一些启示和帮助,也希望有人能对我的作品进行进一步的改进与完善。当然,这个计算器的部署平台不仅仅是android,在pc端也有其可执行的文件,只不过,pc端我仅仅做了一个控制台而已,但是这足以说明我自己写得java大数据运算包能在各个平台下通用,具有较为健壮的能力。 关键词:高精度计算器、运算、多项式运算、android 设计思路 在设计完成这个计算器之前,我主要处于以下几点来考虑: 1.这个计算器应该具有通用型,即无论在windows下还是在linux下,或者还是在android平台下,都可以执行 2.该计算器应该能够快速高效的实现指数幂,对数等不较复杂的运算。 3.能够支持多项式运算,这样可以增加其实用性 4.应该具有很好的容错功能,不然软件就没法用了。 对于以上的四点考虑,我的解决方案如下: 1.使用java作为开发语言,java是运行在java虚拟机之上的,具有很高的通用性 2.采用迈克劳林公式进行指数对数运算,将极大提高运行的效率和精度 3.采用Poland的后缀表达式,使得计算器支持多项式运算 4.加入出错处理模块,让程序在运行过层中自动的进行出错处理 软件架构 我的万位计算器的基本结构如下: 万位计算器基本模块图 计算器总的分为以上三个模块,各个模块都有各自独立实现的功能: 1.大数据处理模块: 这个模块主要是定义我的大数的数据结构,以及完成基于这个数据结构的各种运算,如加减乘除正弦余弦模幂对数等一系列运算 2.表达式处理模块: 这个模块主要是将用户的输入进行检错和转换,将正确的中缀表达式转换成后缀表达式,然后进行求解后缀表达式,最终得到结果 3.界面模块: 这个模块主要是用于与用户交互,良好的界面能够增加应用的实用性,它是连接用户与底层实现的桥梁 总的说来,架构还是相当清晰的,并且根据这个架构进行开发,使得我的开发效率大大提高。 实现原理与过程 这个部分将较为详细的讲述,按照三个模块的顺序进行分析。 (一)大数据处理模块 数据结构: public BigDouble(){ dBaseNumber = 0.0; iIndexNumber = 0; } 上面是最基本的数据结构,分为指数与底数两个模块,全程采用科学计数法进行保存数据。这样做的好处是可以尽量使得运算变得简单有效,但是却损失了精度,当然,后来我将double替换成了java自带的BigDecimal类,使得进度一下子提高,但是,运行速度一下子变慢了,由于考虑到我要将这个程序写到手机应用里去,效率应该多考虑一点,毕竟,只要通过这个编程,我对计算机对数据的处理的理解跟进一步就行了,我更多想的是这个软件以后我自己还会用,也许说不一定别人也可以用,所以我最终还是选择了double作为底数。 下面是改模块实现的函数列表: Modifier and TypeMethod and DescriptionBigDoublelog10(BigDouble otherBigDouble) 返会以10为底,otherBigDouble为真值的对数BigDoubleln(BigDouble otherBigDouble) 返会以e为底,otherBigDouble为真值的对数BigD

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档