为什么在 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 许可协议

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题