双精度到底有多精?

languagec 2004-05-05 07:43:28
http://acm.zju.edu.cn/show_problem.php?pid=1962

一看这题,感觉简单嘛。
10^100 double 以内,double 可以精确到 10^308,用double 数不会溢出 .
不会溢出就好办了,于是决定用数组存放Fibonacci 数,总共480个。
输入a,b 再和数组里的数比较,很简单就可以数出几个数在[a,b] 以内。
很快写好了一段代码,如下。
提交
wrong answer
移……
仔细的检查代码一遍,没错!又交。
wrong answer
这下慌了,一遍一遍的查看代码,一遍一遍的交。
交了n 次,不交了。
发到算法版一问,大虾曰:“高精度。。。”.
不能用double.
为什么不能用? 数没溢出呀!
没人答。
重写代码
写了几个函数,用数组表示数。

char * Add(char *p1,char *p2) //长整数相加
写了个
int Cmp(char *s1,char *s2) //长整数比较大小
还写了个
void Reverse(char *p)//字符串的倒转

终于通过。
但始终没明白为什么不能用double .

想问一下,双精度到底有多精?


#include <iostream.h>
#include <math.h>
double Getnum(char *num)
{
double sum=0;
cin>>num;
while(*num)
{
sum=sum*10+(*num-'0');
num++;
}
//cout<<sum<<endl;
return sum;
}

int main()
{
char num[120];
double arry[1000];
double f1,f2,f3;
double a,b;
int count,j,i;
arry[0]=1;
arry[1]=2;
arry[2]=3;
for(i=3;f3<=pow(10,100);i++)
{
f1=arry[i-2];
f2=arry[i-1];
f3=f1+f2;
arry[i]=f3;
}
cout<<i<<endl;
a=Getnum(num);
b=Getnum(num);
while(!(a==0&&b==0))
{
count=0;
for(j=0;j<i;j++)
if(a<=arry[j]&&arry[j]<=b)
count++;
cout<<count<<endl;
a=Getnum(num);
b=Getnum(num);
}
return 0;
}
...全文
365 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
languagec 2004-05-09
  • 打赏
  • 举报
回复
今天找汇编老师确认了一下,果然楼上的兄弟都说得很清楚了!
10^308 并不是说他的精度,只是它的表示范围。有效数字只有18位。
写了段程序,想看看double 到底怎么表示的,可输出来的东西都看不懂。

#include "stdio.h"
main()
{
union D_C{
double n;
char arry[8];
}a;
int i;
while(scanf("%f",&a.n)!=EOF)
{
for(i=0;i<8;i++)
printf("%0x ",arry[i]);
printf("\n");
}
}
sharkhuang 2004-05-07
  • 打赏
  • 举报
回复
精度和你表示的数字的大小有关系:)
languagec 2004-05-07
  • 打赏
  • 举报
回复
555……
又沉了!
路过的大哥大姐帮忙顶一下!感激不尽……
敲个回车,然后点左下角的发出回复就行。
languagec 2004-05-07
  • 打赏
  • 举报
回复
啊拼 /
言归正传,double 精确到 10^308 是怎么回事?
languagec 2004-05-07
  • 打赏
  • 举报
回复
楼上要是觉得明白了,能不能再明白的说一遍?
languagec 2004-05-07
  • 打赏
  • 举报
回复
等我弄明白后,我自己回来顶!
qdshshl 2004-05-07
  • 打赏
  • 举报
回复
大家说的饿已经是够详细了,如果你还不知道的话就先回去看看书吧。
languagec 2004-05-06
  • 打赏
  • 举报
回复
呵呵 扯远了
w78z 2004-05-06
  • 打赏
  • 举报
回复
晕倒。。楼主。。我佩服你。
fanbest 2004-05-06
  • 打赏
  • 举报
回复
爱是一生用不尽的力量
fanbest 2004-05-06
  • 打赏
  • 举报
回复
fanbest 2004-05-06
  • 打赏
  • 举报
回复
收到。我特地来此制造下文
languagec 2004-05-06
  • 打赏
  • 举报
回复
还有 就是 up ……
languagec 2004-05-06
  • 打赏
  • 举报
回复
还有 爱是一生用不尽的力量
languagec 2004-05-06
  • 打赏
  • 举报
回复
下文就是你呀
fanbest 2004-05-06
  • 打赏
  • 举报
回复
下文是什么东东?
languagec 2004-05-06
  • 打赏
  • 举报
回复
顶呀
沉了就看不到下文了。
languagec 2004-05-06
  • 打赏
  • 举报
回复
好象是这样
aaawolf 2004-05-06
  • 打赏
  • 举报
回复
看起来很有意思,等待下文!!
languagec 2004-05-06
  • 打赏
  • 举报
回复
不过还是不太明白
加载更多回复(17)

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧