c++ - 为什么在 C++ 中 pow(10,5) = 9,999

标签 c++ mingw pow

最近写了一段代码:

const int sections = 10;

for(int t= 0; t < 5; t++){
   int i = pow(sections, 5- t -1);  
   cout << i << endl;
}

结果是错误的:

9999
1000
99
10
1

如果我只使用这段代码:

for(int t = 0; t < 5; t++){
    cout << pow(sections,5-t-1) << endl; 
}

问题不再出现:

10000
1000
100
10
1

有人给我解释一下吗?非常感谢!

最佳答案

由于浮点值的表示 pow(10.0, 5)可能是 9999.9999999 或类似的东西。当您将其分配给一个被截断的整数时。

编辑:如果是 cout << pow(10.0, 5);看起来输出是四舍五入的,但我现在没有任何支持文件可以证实这一点。

编辑 2:BoBTFish 和 this question 发表的评论确认当pow(10.0, 5)直接用于cout正在变圆。

关于c++ - 为什么在 C++ 中 pow(10,5) = 9,999,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9704195/

相关文章:

mono - Math.Pow() 在单 ARM 构建中损坏?

java - 在 Java 中使用 Math.pow 确定立方体的表面积,并且 'skipping' 也有困难

C++ fstream 删除选定点的文件内容

c++ - rpcndr 和 cstddef 中的不明确字节定义

c - 使用 gcc 优化 -mavx 失败?

linux - 使用 makefile.in 将 linux 源代码编译为 windows 7

c++ - std::stoi 在 MinGW 上的 g++ 4.6.1 中不存在

python - 将非常大的 n 基数转换为字节

c++ - 在 C++ 中将对象传递给抽象类型的构造函数

c++ - 在可变参数模板扩展中递增 int 的安全方法是什么?