c++ - C ++ double 除以 double 结果为舍入数
问题描述
我有以下计算:
double a = 141150, b = 141270, c = 141410;
double d = (a + b + c) / 3;
cout << d << endl;
输出显示d = 141277
,而d
应该是141276.666667
。计算包括双加和双除。为什么我得到一个四舍五入的结果?顺便说一句d = (a + b + c) / 3.0
也没用。
然而在另一个类似的计算中,结果是正确的:
double u = 1, v = 2, x = 3, y = 4;
double z = (u + v + x + y) / 4;
z 结果2.5
如预期。这两个计算本质上是一样的,但是为什么会有不同的行为呢?
最后,我知道 C++ 会自动截断转换为较低精度的数字,但我从未听说过自动舍入。有人可以阐明一下吗?
解决方案
在这里,您可以使用代码片段作为示例找到同一问题的多个答案。它确实包括那些家伙在评论中所说的话
推荐阅读
- django - 芹菜不在 django 中工作,只是在等待(待定)
- reactjs - Reactjs 袜子不会将向下模式应用于渲染输出
- javascript - 如何检查或调试 AngularJS 控制器是否工作?
- javascript - react-native loginwithpermissions 承诺未在 android 上解决
- java - JasperReports 如何将一系列页面导出到文本文件?
- apache - 将 AJP 代理与 Apache 一起使用时未显示自定义错误页面
- .htaccess - 使用语言路径和单个 URL 的重定向在 htaccess 中重写到新域
- python - 使用 Keras 的顺序密集网络上的输入维度错误
- java - Spring bean 装饰没有歧义错误
- java - 谁能告诉我这段代码出了什么问题?