double与float

lll111jjj 2008-07-16 10:27:59
这是一个求PI的程序:
#include "stdio.h"
void main()
{int sign=-1;float n,pi=1;/*float改为double*/
for(n=1;1/(2*n+1)>=1e-6;n++)
{pi=pi+sign*(1/(2*n+1));
sign=-sign;
}pi*=4;
printf("%f",pi);
getch();
}所求结果为pi=3.141594
但是现在我将注释行float改为double,则会变为pi=3.141591
为什么????谢谢了!
我印象中的是 可以用float的地方可以用double,可以用double的地方却不一定能用float的,是不是这样?
谢谢大家了!!!
...全文
224 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangfanchina 2008-07-17
  • 打赏
  • 举报
回复
二者精度不一样
tangtang02520 2008-07-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lll111jjj 的回复:]
唉。。。我突然不知道我想问什么了
谢谢大家这么快就回答我了
[/Quote]

呵呵
lll111jjj 2008-07-16
  • 打赏
  • 举报
回复
唉。。。我突然不知道我想问什么了
谢谢大家这么快就回答我了
ndsl3334 2008-07-16
  • 打赏
  • 举报
回复
float是单精度浮点型
double是双精度浮点型
所以float没double表示的准确
wk00222 2008-07-16
  • 打赏
  • 举报
回复
可以用float的地方可以用double,可以用double的地方却不一定能用float的,是不是这样?

double是双精度的
float是单精度
SeanHwang 2008-07-16
  • 打赏
  • 举报
回复
可以用float的地方可以用double,可以用double的地方却不一定能用float的,是不是这样
一般来说是这样
SeanHwang 2008-07-16
  • 打赏
  • 举报
回复
这个显然是因为精度影响了~因为现在计算机都是二进制,小数是肯定有误差的~
一般来说位数越多,精度越高,3.14159265,你换成double之后,精度就提高了~

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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