pow函数的使用
本帖最后由 木Muk 于 2018-3-29 09:36 编辑这个是查了好多资料,都感觉自己要疯了,我使用了pow(x,y)求出来的数值如果用%d输出就会出错,int 强制转换都会变成0.0000……
好吧,求解 把传进去的值强制转换为double即可 pow 函数有两个参数, 两个参数都是浮点型
如果你一定要用%d 输出 那么就一定要转换数据类型。
#include <stdio.h>
#include <math.h>
int main(){
double x,y = 3;
x = y;
printf ("%f\n",pow(x,y));
// ---------------------或者
int x_1,y_1 = 3;
x_1 = y_1;
printf ("%d",(int)(pow(x_1,y_1)));
return 0;
}
风过无痕丶 发表于 2018-1-2 09:52
pow 函数有两个参数, 两个参数都是浮点型
如果你一定要用%d 输出 那么就一定要转换数据类型。
也就是说pow(x, y)中x,y不能直接用常数传输,全都必须要用参数传入? 木Muk 发表于 2018-1-2 10:28
也就是说pow(x, y)中x,y不能直接用常数传输,全都必须要用参数传入?
当然可以直接使用常数! 我觉得你这样学 会把自己绕死。。。
#include <stdio.h>
#include <math.h>
int main(){
printf ("pow(3,2) = %f\n",pow(3,2));
printf ("new_pow(3,2) = %d\n",(int)pow(3,2));
return 0;
}
1. pow 参数一参数二 都是浮点型, 返回值也是浮点型。
2. printf 并不会自动转换类型,你让它用什么方式输出它就怎么输出。
3. 浮点型和整型的存放方式都不一样, 浮点型用的LEEE 754标准存放, 整型用 补码的方式存放
3.所以你觉得 不转换类型 他们能正确输出吗 风过无痕丶 发表于 2018-1-2 11:08
当然可以直接使用常数! 我觉得你这样学 会把自己绕死。。。
{:10_256:}我突然发现我的pow(x, y)用的是对的,只是其他地方用错了
打扰了
谢谢
{:10_285:}
页:
[1]