我在c ++中测试了pow()函数
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout << pow(8,(1/3)) << endl;
return 0;
}
出于某种原因,这会返回1.为什么会发生这种情况?
答案 0 :(得分:8)
这是因为1/3
以整数计算。除法的结果是0
,因此pow(x, 0)
生成1
。
将分区更改为双打,如下所示:
cout << pow(8,(1.0/3)) << endl; // prints 2 as expected
答案 1 :(得分:2)
1/3产生0
的整数结果答案 2 :(得分:1)
当您使用整数作为pow()函数的输入时,计算机会截断输出。如果输入浮点数,则错误将被更正
pow(8,1 / 3)= 1
pow(8.0,1.0 / 3)= 2