为什么 C++ 认为 8^1/3 = 1?
Why does C++ think 8^1/3 = 1?
我正在用 C++ 测试 pow() 函数
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout << pow(8,(1/3)) << endl;
return 0;
}
出于某种原因,这 returns 1. 为什么会这样?
这是因为 1/3
是以整数计算的。除法的结果是 0
,所以 pow(x, 0)
产生 1
.
像这样将分组改为双打分组:
cout << pow(8,(1.0/3)) << endl; // prints 2 as expected
1/3 产生整数结果 0
当您使用整数作为 pow() 函数的输入时,计算机会截断输出。如果您输入浮点数,错误将得到纠正
幂(8, 1/3) = 1
pow(8.0, 1.0/3) = 2
我正在用 C++ 测试 pow() 函数
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout << pow(8,(1/3)) << endl;
return 0;
}
出于某种原因,这 returns 1. 为什么会这样?
这是因为 1/3
是以整数计算的。除法的结果是 0
,所以 pow(x, 0)
产生 1
.
像这样将分组改为双打分组:
cout << pow(8,(1.0/3)) << endl; // prints 2 as expected
1/3 产生整数结果 0
当您使用整数作为 pow() 函数的输入时,计算机会截断输出。如果您输入浮点数,错误将得到纠正
幂(8, 1/3) = 1
pow(8.0, 1.0/3) = 2