木Muk 发表于 2018-1-2 00:46:09

pow函数的使用

本帖最后由 木Muk 于 2018-3-29 09:36 编辑

这个是查了好多资料,都感觉自己要疯了,我使用了pow(x,y)求出来的数值如果用%d输出就会出错,int 强制转换都会变成0.0000……
好吧,求解

BngThea 发表于 2018-1-2 07:12:52

把传进去的值强制转换为double即可

风过无痕丶 发表于 2018-1-2 09:52:53

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;
       
}

木Muk 发表于 2018-1-2 10:28:43

风过无痕丶 发表于 2018-1-2 09:52
pow 函数有两个参数, 两个参数都是浮点型
如果你一定要用%d 输出 那么就一定要转换数据类型。

也就是说pow(x, y)中x,y不能直接用常数传输,全都必须要用参数传入?

风过无痕丶 发表于 2018-1-2 11:08:33

木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.所以你觉得 不转换类型 他们能正确输出吗

木Muk 发表于 2018-1-2 16:48:51

风过无痕丶 发表于 2018-1-2 11:08
当然可以直接使用常数! 我觉得你这样学 会把自己绕死。。。




{:10_256:}我突然发现我的pow(x, y)用的是对的,只是其他地方用错了

打扰了
谢谢
{:10_285:}
页: [1]
查看完整版本: pow函数的使用