微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C中,为什么将幂设置为1/2时幂函数返回1?

如何解决在C中,为什么将幂设置为1/2时幂函数返回1?

当我使用以下代码时,我试图复制这样的想法:sqrt(x)等于X^(1/2)

pow(x,(1/2);

无论我输入什么值,它都返回1。我已经使用sqrt函数解决了此问题,但想知道为什么将来会发生这种情况。

解决方法

在最初的形式中,1/2是整数除法,其结果为0

数学101:任何加0的结果都是1。

,

1(整数文字)除以2(整数文字)会要求整数除法(在运算符/上),结果为{{1 }}。从那时起,您将0赋予函数0,该函数将pow(3)转换为0(作为函数所需的0.0),并且这就是您要计算的,double等于x的幂0.0

您使用过

1.0

使用浮点文字而不是整数,除法应该是浮点,得到pow(x,(1.0/2.0)); /* there's a closing parenthesis missing in your sample code */ 作为结果,并且应该计算0.5的平方根。

顺便说一下,您在同一库中有一个函数x用于求平方根:

pru.c

sqrt(3)

执行该代码将给出:

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

/* ... */

int main()
{

    double x = 625.0;

    printf("square root of %.10f is %.10f\n",x,sqrt(x));
    printf("%.10f to the power 1/2 is %.10f\n",pow(x,1.0/2.0));
    return 0;
}

,

整数除法产生整数结果,因此1/2产生0,而不是0.5。要获得浮点结果,至少一个操作数必须是浮点值,例如1 / 2.0。尽管您可以只写0.5并保存胃灼热。

, c ++中的

1/2为0,因为它们都是整数。您可以使用1.0 / 2.0或0.5进行所需的操作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。