网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
设计高精度乘法计算函数
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式


spT=su_ad(spC,spX);

su_fr(spC);

spC=su_co(spT);

su_fr(spT);

 

}

spT=su_mo(spC,iC1);

su_fr(spC);

spC=su_ad(spNew,spT);

su_fr(spNew);su_fr(spT);

spNew=su_co(spC);

su_fr(spC);

}

spT=su_mo(spNew,-iYDec);

su_fr(spNew);

spNew=su_co(spT);

su_fr(spT);

su_fr(spYDec);

su_fr(spX);

su_fr(spY);

return spNew;

}

在此函数中,我们使用了在高精度计算软件包中定义的其他函数(本文省略其实现代码),主要有:

1.将字符串转化为SUPERNUMBER类型:

struct SUPERNUMBER * su_as(char*zpSource);

2.将一个SUPERNUMBER复制到另一个SUPERNUMBER中:

struct SUPERNUMBER * su_co(struct SUPERNUMBER * spSource);

3.两个SUPERNUMBER的“等于”关系运算,若相等,返回1:

int su_ee(struct SUPERNUMBER * spSource, struct SUPERNUMBER * spDesti);

4.两个SUPERNUMBER数的加法运算:

struct SUPERNUMBER * su_ad(struct

SUPERNUMBER * spSource,struct SUPERNUMBER * spDestination);

5.SUPERNUMBER与用整数表示的数据的加法运算:

struct SUPERNUMBER * su_si(

struct

SUPERNUMBER * spSource, int iDesti);

6.移动小数点:

struct SUPERNUMBER * su_mo(struct

SUPERNUMBER * spSource, int iNum);

7.释放SUPERNUMBER数据的存储空间:

void su_fr(struct SUPERNUMBER * spSource);

应用实例

当我们计算16的阶乘时,常规的方法难于直接得到正确的结果,即使定义长整型(long int)数据,在计算出11的阶乘39916800之后,也开始出现数据错误。但是利用本文介绍的方法,可精确地计算出从1到16的阶乘值。代码如下:

FILE * fp;

struct SUPERNUMBER * spX;

struct SUPERNUMBER * spY;

struct SUPERNUMBER * spZ;

struct SUPERNUMBER * spSum;

fp=fopen(“abcd.txt”,“a+”);

if (fp==NULL) MessageBox(hWndMain,“file error”,“”,MB_OK);

//初始化变量

spX=su_as(“0”);

spY=su_as(“30”);

spSum=su_as(“1”);

//计算从1到16的阶乘值

lp: spZ=su_si(spX,1);

su_fr(spX);

spX=su_co(spZ);

su_fr(spZ); spZ=su_mu(spSum,spX);

su_fr(spSum);

spSum=su_co(spZ);

su_fr(spZ);

su_os(spSum);

su_of(spX,fp);

su_of(spSum,fp);

if (!su_ee(spY,spX)) goto lp;

 

fclose(fp);

运算结果为:

1 ! 1 2! 2

3 ! 6 4! 24



13 ! 6227020800 14! 87178291200

15 ! 1307674368000 16! 20922789888000

  • 下一篇资讯: 多步Undo/Redo的实现
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号