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

新手上路,请多包涵

最近我写了一段代码:

 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 许可协议

阅读 960
1 个回答

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

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

编辑 2:BoBTFish 的评论和 这个问题 证实,当 pow(10.0, 5) 直接在 cout 中使用时,这是四舍五入的。

原文由 taskinoor 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题