FreeBASIC高精度计算讲稿.ppt

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

高精度除法 例8 被除数与除数是整型数,商是高精度的除法(指定保留e位小数)。 算法分析 设a、b是两个系统允许的整型数,a/b的值有两种情况: a能被b整除,没有余数; a不能被b整除,有余数。 可以看出,在做除法运算时,除数(b)是始终不变的,商数(d)和余数(a)是变的。下一次的被除数是“余数*10”,也是跟着变的。这三个变量之间的关系是: a = a * 10 : d=a \ b PRINT USING “#” ; d; ‘d是一位商(小数),一定要及时输出 a = a MOD b 把以上的三个语句放在一个循环里,一个除法运算就形成了。确定商的精度取几位小数的问题,可以输入一个正整数e来确定商的精度。 例9 被除数与除数是整型数,商是高精度的除法(指定保留e位小数)。如是循环小数输出循环节,循环节用‘ ’表示。 算法分析 在除法运算中,如不能整除,就有三种情况: 有限小数,最后除尽; 循环小数,由指定的精度,输出e位小数; 循环小数,输出循环节。 上例解决了前两种情况,现在来讨论如何处理循环小数的情况。 判断循环小数,只要看余数是否重复出现。若余数重复出现,所得商就会重复出现,这就产生了循环小数 处理的方法:可把每次出现的不同余数用数组记录下来,若以后的操作中产生了新的余数,与数组中的余数相同,就证明出现了循环。除法运算终止。这时,只要把循环的部分输出即可。 建立两个数组:用A( )数组来存放余数,用D( )数组来存放商数。数组的大小由e确定 在运算的过程中,可能出现三种情况: 有限小数,最后除尽,就中断循环,记下循环变量当时的值,用以判断不输出循环节; 循环小数,由指定的精度终止,输出e位小数; 循环小数,在e位小数前出现循环,记下循环变量当时的值,用以判断输出循环节。 例10 被除数用数组存放,除数是个整型数,商是高精度的除法,如除不尽留余数。 { 高精度数除以普通整数 } 算法分析 数据的输入与存储,定义存储数组的大小,要定义存储被除数和商数两个数组 数据处理 算法分析: 除法运算是从最高位开始的,所以分离被除数时,数据的位权与下标序号正好相反。{ 正序存放 } 用一个计数循环,从 1 到La: 一位一位取出被除数; 在除法运算中,每次都要把上一次的余数*10,再加上取出的本位被除数 ( 与 例9 不同 ),临时组成被除数。 具体的算法是: Y = Y * 10 + A(K) ‘A(K):被除数 D(K) = Y \ B ‘D(K):商 Y = Y MOD B ‘ 余数 循环结束时,如除不尽,余数保存在 y 中。 第一次做除法运算前,先设 Y = 0。 结果输出 有时,商数组前面有许多单元中存的是0。前面的无用的0不输出: K = 1 DO WHILE A(K) = 0 K = K + 1 LOOP dim as string aa input a=,aa dim as integer b, a(100), d(100) input b=, b la = len(aa) for i=1 to la a(i) = val ( mid (aa, i, 1) ) d(i) = 0 next i y = 0 for i = 1 to la y = y * 10 + a(i) d(i) = y \ b y = y mod b next i k = 1 do while d(k)=0 k=k+1 loop for i = k to la print str ( d(i) ); next i if y0 then print ......;y sleep : end * 高精度计算 高精度计算的由来与含义 在FB中,整型/长长整型数的长度只有4字节/8字节。整型的取值范围分别为-2147483648~ 2147483647。Longint数的长度为19位。 如果需要获得超过这个精度的运算结果(如大整数相加、相乘、实数运算要求有多位小数等),只有靠程序来实现了——也称为“大整数运算”; 在通过程序获得更高的精度的做法中,通常是利用数组,把每一位数字存放在一个元素中,然后,模仿笔算的方式,一位一位地计算,这就是计算机的高精度计算 * 数组存储的优化:优化空间、计算量; 高精度计算的主要步骤: 高精度计算要分三个方面来处理: 数据的输入与存储,估计结果的位数(How?),定义存储数组的大小; 运算:加法的进位、减法的借位,乘法的积,除法的

文档评论(0)

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

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

1亿VIP精品文档

相关文档