double ? float?

sunoct 2009-06-28 05:22:30
#include <stdio.h>
#include <math.h>
int main()
{

double x = 3.14159625;
double y = 2.5;
double z = pow(x,y);

printf(" x to the power of y is %lf\n", z);
return 0;
}

z不是double么 为什么出来的数据小数点后面只有六位 是float啊

刚学C两天 初次提问 请多关照。
...全文
47 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunoct 2009-06-29
  • 打赏
  • 举报
回复
仿佛出现了更奇怪的事
我用VC6.0算xyz均为float时 结果是17.493419544621673
用c free算出来却是正确的 17.493419647216797

好困惑啊。
ForestDB 2009-06-29
  • 打赏
  • 举报
回复
可以肯定你,是用了%.15f。

#include <stdio.h>
#include <math.h>

int main()
{
printf("%.15f\n", pow(3.14159265, 2.5));
printf("%.15f\n", (float)pow(3.14159265, 2.5));
printf("%.15f\n", pow(3.14159265f, 2.5f));
printf("%.15f\n", (float)pow(3.14159265f, 2.5f));

return 0;
}

17.493418277652001 // xyz均为double
17.493417739868164
17.493419544621673
17.493419647216797 // xyz均为float
sunoct 2009-06-28
  • 打赏
  • 举报
回复
真抱歉 这么低级的错误 这样的话 double型的时候 结果和照片一样
但是把z改成float的时候 和刚才double时候的结果是一样的
把xyz都改成float 结果是
17.493419544621673

这是为什么啊 !!!
logiciel 2009-06-28
  • 打赏
  • 举报
回复
你的X与照片不一样!你的是x = 3.14159625,而照片上是x = 3.14159265.
sunoct 2009-06-28
  • 打赏
  • 举报
回复
还是不懂 我把%lf改成%.15lf 结果算出来是 17.493468392646957
跟上面照片里 无论是float 还是double都不一样诶
sunoct 2009-06-28
  • 打赏
  • 举报
回复
谢谢ls,这样子哦 。
可是讲义上写的是
难道他是写的%15f才搞成这个样子的 ?
only_lonely 2009-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 steedhorse 的回复:]
浮点数的精度问题不是这么简单的。
但对于printf来说,我记得%lf默认就是打印6位小数。你也可以自己控制一下,比如“%.8f”。
[/Quote]

用TC编的么? 默认是6位了
晨星 2009-06-28
  • 打赏
  • 举报
回复
浮点数的精度问题不是这么简单的。
但对于printf来说,我记得%lf默认就是打印6位小数。你也可以自己控制一下,比如“%.8f”。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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