[求助]float转化为int出错
printf("%d", power(2,3));答案为0
----------------解决方案--------------------------------------------------------
以下是引用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();
}
你试下这是不是你想要的呀?
----------------解决方案--------------------------------------------------------
谢谢各位了,我知道了
----------------解决方案--------------------------------------------------------