当前位置: 代码迷 >> C语言 >> [求助]float转化为int出错
  详细解决方案

[求助]float转化为int出错

热度:322   发布时间:2006-09-21 10:05:02.0
[求助]float转化为int出错

printf("%d", power(2,3));答案为0

搜索更多相关的解决方案: float  int  power  

----------------解决方案--------------------------------------------------------
以下是引用zzymoon在2006-9-21 10:05:02的发言:

printf("%d", power(2,3));答案为0

能不说明白一点.


----------------解决方案--------------------------------------------------------

把你的帖子完整的贴出来!


----------------解决方案--------------------------------------------------------
#include "stdio.h"
#include "math.h"
main()
{
printf("%d",pow(2,3));
}
为什么输出结果为0?

pow(m,n);是求m的n次方,返回的是float型数据,这里就是将float转化成为了int 型以%d输出
请问float型在内存中是怎么样存放的?由float转化为int应该是截取后16位,那么答案也不可能是0撒?

再比如:printf("%d",234.0);为什么输出结果也是0?

而且在VS中pow(m,n)中的m和n都不能是整数。例如:pow(2,3)会提示参数错误,不过如果是:pow(2.0,3.0)就不会有问题

----------------解决方案--------------------------------------------------------
printf("%d",(int)pow(2,3));
printf("%d",(int)234.0);
----------------解决方案--------------------------------------------------------
这也就是说printf中没有进行数据自动转换的功能?
----------------解决方案--------------------------------------------------------

不是没有,你想象成double--->int,这个是不可以的.


----------------解决方案--------------------------------------------------------
printf可以进行数据转换,只需要定义就OK了
----------------解决方案--------------------------------------------------------

#include "stdio.h"
#include "math.h"
main()
{ int a;

a=pow(3,2);

printf("%d",a);
getch();
}
你试下这是不是你想要的呀?


----------------解决方案--------------------------------------------------------
谢谢各位了,我知道了
----------------解决方案--------------------------------------------------------
  相关解决方案