最近写了一段代码:
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/