在C中解释math.h的pow函数的方法

时间:2017-10-31 19:36:43

标签: c

我学习了C#,但我想学习C,然后学习C ++ for OOP。现在我正在使用库math.h和函数pow(x,y)在C.
我正在用这段代码编写一个程序:
enter image description here
我觉得很奇怪。结果如下:
enter image description here

我的问题是关于战俘。它做了什么? 是否有可能向我解释为什么这些事情表明了?我无法理解。
谢谢你的帮助,我也很抱歉我的英语。

2 个答案:

答案 0 :(得分:1)

您的代码的主要问题是您必须了解如何处理C可以处理的几种本机类型的操作。

如果两个运算符都是整数,除法运算(/)将返回一个整数。

那是:

1 / 4 == 0

而不是 0.25 ,因为它似乎是您所期待的。

因此,在行:

number = pow(160000, 1 / 4);

您实际执行的是:

number = pow(160000, 0);

我们知道任何提升到 0 能力的基数等​​于 1

答案 1 :(得分:1)

编译器将'1/4'视为整数除法。

这意味着它首先进行计算为0.25的除法然后将其转换为整数(丢弃小数),然后将其保留为0.并且任何以0为幂的数字都为1.

在1和4之后添加小数点可让编译器知道您希望除法的结果为double,因此它将结果保持为0.25。

以下是一些示例代码:

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

int main()
{
    double number = 1/4;
    printf("Integer Division: %f\n", number); //prints 0

    number = 1.0/4.0;
    printf("Double Division: %f\n", number); //prints 0.25

    return 0;
}