最近我写了一段代码:
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
有人给我解释吗?非常感谢你!
原文由 Kingfisher Phuoc 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于浮点值的表示
pow(10.0, 5)
可能是 9999.9999999 或类似的东西。当您将其分配给被截断的整数时。编辑:如果是
cout << pow(10.0, 5);
看起来输出是四舍五入的,但我现在没有任何支持文件来证实这一点。编辑 2:BoBTFish 的评论和 这个问题 证实,当
pow(10.0, 5)
直接在cout
中使用时,这是四舍五入的。