为什么C ++认为8 ^ 1/3 = 1?

时间:2015-08-08 02:09:14

标签: c++ pow

我在c ++中测试了pow()函数

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    cout << pow(8,(1/3)) << endl;
    return 0;
}

出于某种原因,这会返回1.为什么会发生这种情况?

3 个答案:

答案 0 :(得分:8)

这是因为1/3以整数计算。除法的结果是0,因此pow(x, 0)生成1

将分区更改为双打,如下所示:

cout << pow(8,(1.0/3)) << endl; // prints 2 as expected

Demo.

答案 1 :(得分:2)

1/3产生0

的整数结果

答案 2 :(得分:1)

当您使用整数作为pow()函数的输入时,计算机会截断输出。如果输入浮点数,则错误将被更正

pow(8,1 / 3)= 1

pow(8.0,1.0 / 3)= 2