| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1553 人关注过本帖
标题:谁知道大于20位数的计算器怎么做?
只看楼主 加入收藏
gy0328
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-12-3
收藏
 问题点数:0 回复次数:6 
谁知道大于20位数的计算器怎么做?

哪位高手知道大于20位数的计算器怎么做?

搜索更多相关主题的帖子: 计算器 位数 
2006-12-04 20:17
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 

应该用一个大数组来存储数据,然后进行高精度运算.

高精度算法以前我帖过:http://bbs.bc-cn.net/viewthread.php?tid=103210&extra=&page=10#390076

高精度定义类型的最佳办法是 long s[1000]; 每位存储一个10000进制的数,即这个s变量可以精确存储一个4000位的数!高精度计算其实就是模拟我们的正常计算方法,只是数据的规模太大找不到一个可是使用的正常变量类型,因此用数组模拟.


如果不懂可以继续跟帖问


My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2006-12-05 12:59
gy0328
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-12-3
收藏
得分:0 
我看了你的高精度,卧龙孔明.谢谢你的讲解,但是没有看懂啊.
可不可以给个详细点的讲解.
老师没有讲过高精度啊,考试考的一道题,我没有答下来.
希望给个具体算法~~

成功不是偶然,努力才是必然!
2006-12-05 22:34
aaabccc
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-11-6
收藏
得分:0 
我也看不懂高精度

2006-12-06 15:14
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
加法的C代码(10进制型,若改为10000进制将输入方式,存储类型以及进位方法改一下就行)

/*特别为网友写的,请勿直接抄袭*/
#include "stdio.h"
int main(void) {
char a[1000]={0},b[1000]={0},sum[1001]={0};
int i=0,lena,lenb,f=1000;
scanf("%s%s",a,b);
while(a[i]!=0) { a[i]-='0'; i++; }
lena=i; i=0;
while(b[i]!=0) { b[i]-='0'; i++; }
lenb=i; i=1;
while(lena!=0 || lenb!=0 || i) {
if(lena==0 && lenb==0) i=0;
sum[f]=a[lena]+b[lenb]; f--;
if(lena==0) a[lena]=0; else lena--;
if(lenb==0) b[lenb]=0; else lenb--;
}
for(f=1000;f>-1;f--) {
sum[f-1]+=sum[f]/10;
sum[f]=sum[f]%10;
} f=0;
for(i=0;i<1000;i++) {
if(f==0 && sum[i]!=0) f=1;
if(f) printf("%d",sum[i]);
}
getch(); /*观看结果*/
return 0;
}
其它运算在近日内写出并帖出

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2006-12-07 12:06
gy0328
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-12-3
收藏
得分:0 

看明白了.非常感谢斑竹!
高手啊!

[此贴子已经被作者于2006-12-7 20:40:28编辑过]


成功不是偶然,努力才是必然!
2006-12-07 20:38
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
/*减法*/
#include "stdio.h"
#include "string.h"
int main(void) {
char a[1000]={0},b[1000]={0},sum[1000]={0};
int i=0,lena,lenb,f=999,t=0;
scanf("%s%s",a,b);
while(a[i]!=0) { a[i]-='0'; i++; }
lena=i; i=0;
while(b[i]!=0) { b[i]-='0'; i++; }
lenb=i; i=1;
if(strcmp(a,b)<0) { printf("%c",'-'); t=1; }
while(lena!=0 || lenb!=0 || i) {
if(lena==0 && lenb==0) i=0;
if(!t && (sum[f]+=a[lena]-b[lenb])<0) { sum[f-1]--; sum[f]+=10; }
if( t && (sum[f]+=b[lenb]-a[lena])<0) { sum[f-1]--; sum[f]+=10; }
f--;
if(lena==0) a[lena]=0; else lena--;
if(lenb==0) b[lenb]=0; else lenb--;
}
for(f=999;f>-1;f--) {
sum[f-1]+=sum[f]/10;
sum[f]=sum[f]%10;
} f=0;
for(i=0;i<999;i++) {
if(f==0 && sum[i]!=0) f=1;
if(f) printf("%d",sum[i]);
}
getch();
return 0;
}

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2006-12-07 20:59
快速回复:谁知道大于20位数的计算器怎么做?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044189 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved