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

标签 c++ pow

我正在用 C++ 测试 pow() 函数

#include <iostream>
#include <cmath>

using namespace std;

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

出于某种原因,这会返回 1。为什么会这样?

最佳答案

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

像这样将分组改为 double 分组:

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

Demo.

关于c++ - 为什么 C++ 认为 8^1/3 = 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31888925/

相关文章:

java - 在java中用非常大的指数计算幂

c++ - -1.#IND 是哪种 C++ 常量/宏?

c++ - 删除调试语句的命令

c++ - 杆切割 - 递归

c++ - 相互导入 C++

c++ - 动态创建二维数组时使用了多少大小

C++ 创建一个 char* 迭代器

c - pow(1,0) 返回 0?

c - R的R_pow()和libc的pow()有什么区别?

C - pow() 奇怪的行为