分享
分享赚钱 收藏 举报 版权申诉 / 4

类型高精度计算.doc

  • 上传人:j35w19
  • 文档编号:7214468
  • 上传时间:2019-05-10
  • 格式:DOC
  • 页数:4
  • 大小:42KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    高精度计算.doc
    资源描述:

    1、高精度计算利用计算机进行数值计算,有时会遇到这样的问题,有些计算要求精度高,希望计算的数的位数可达几十位甚至几百位,虽然计算机的计算精度也算较高了,但因受到硬件条件的限制,往往达不到实际问题所要求的精度,我们可以利用高精度计算的方法来实现更高精度计算的目的。高精度计算中需要处理好以下几个问题:(1) 数据的接收方法和存贮方法 当输入的数很长时,可采用字符串方式输入,这样可输入数字很长的数,利用字符串函数和操作运算,将每一位数取出,存入数组中;另一种方法是直接用循环数组方法输入数据。(2) 进位、借位的处理加法进位:ai:=ai+bi;ai+1:=ai+1+ai div 10; ai:=ai m

    2、od 10;减法借位:if ai0 then inc(len);for i:=len downto 1 do writeln(ai);end;二、 高精度减法程序For i:=1 to len doBegin if ai0 then begin inc(len);alen:=c;For i:=len downto 1 do write(ai);(2)多精度与多精度乘法Program p4;Const n=100;Var a,b:array1n of integer;C:array12*n+1 of integer;Len1,len2,I,j,x,y,w:integer;BeginReadln(

    3、str1);readln(str2);Len1:=length(str1);len2:=length(str2);For i:=1 to len1 do alen1+1-i:=ord(str1i)-ord(0);For i:=1 to len2 do blen2+1-i:=ord(str2i)-ord(0);For i:=1 to len1 doFor j:=1 to len2 doBegin x:=ai*bj;Y:=x div 10;z:=x mod 10; w:=i+j-1;cw:=cw+z;cw+1:=cw+1+cw div 10+y;cw:=cw mod 10end;e:=len1+l

    4、en2;while ce=0 then e:=e-1;for i:=e downto 1 do write(ci);end.当输入 str1=123456789,str2=987654321 时,结果是:121932631112635269四、加大进制的方法前面所介绍的各种方法都是以十进制为基础的,当数很大时,为了加快速度,可以采用100 或 10000 进制或更大的进制的方法。除了进制有所变化外,算法没有什么变化。例 1、 求 n!的精确值。分析:n!=1*2*3*.*n,算法如下:(1) 确定位数:len=trunc(1/ln10(lnn+ln(n-1)+.+ln3+ln2+ln1)+1;

    5、(2) 每位数占用一个数组单元,每个单元存放四位数,内存可节省到 1/4;(3) 进位处理,进位的条件是存储单元的数是否大于 9999;(4) 输出处理:将各单元的数顺序输出,但若该单元不是最高位且不足四位数则在需要在前面补 0,凑成四位数。Program p6;Const m=200;Var a:array1m of integer;I,j,y,c,n,k,t:integer; F:real;BeginRead(n);F:=0;For i:=1 to n do f:=f+log(i)log(10);T:=trunk(f)+1;A1:=1;len:=1;k:=1;For i:=1 to n d

    6、oBegin c:=0;While ak=0 do inc(k);For j:=k to len doBegin y:=ai*i+c;C:=y div 1000;Ai:=y mod 1000End;If c0 then begin inc(len);alen:=c end;End;For i:=len downto 1 doBegin if i=1 then write(ai)Else begin str(ai,st1);While length(st1)3 do st1:=0+st1;Write(st1);End;End;End.当 n=10,10!=3628800;当 n=15,15!=1307674368000练习:1、正月里,鼠妈鼠爸生了 12 只小鼠,于是大小鼠共有 14 只,二月里,两 代鼠全部配对,每对鼠又各生了 12 只小鼠,因此共有鼠 98 只。如这样下去每月所有的鼠全部配对,每对鼠又各生 12 只小鼠,十二个月后,鼠的总数是多少呢?2、用高精度计算出 s=1!+2!+3!+.+n!(n=50),输入正整数 n,输出计算结果 s.3、正实数加法计算,读入两个 100 位长的正实数,求出它们的和。4、麦森数

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:高精度计算.doc
    链接地址:https://www.docduoduo.com/p-7214468.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开