我正在尝试在C++中评估以下表达式.我正在使用Visual Studio(当前版本),如果这有任何区别.
#define _USE_MATH_DEFINES
#include <math.h>
#include <iostream>
std::cout << (1.686 * 1000 / (4 / 3) / M_PI / (pow(0.015, 3)) / 3340);
Run Code Online (Sandbox Code Playgroud)
现在,当我执行程序时,输出是:
47608.8
然而,如果我使用WolframAlpha,表达式将被评估为:

我还尝试分解表达式的每个部分,以检查"pow()"函数之类的函数是否正常工作,或者M_PI是否准确,但是在我一次评估所有内容之前,所有内容似乎都是一致的.
我错过了什么,为什么我的答案不正确?
我一直在看这段代码很长一段时间,我似乎无法弄清楚发生了什么.我在想它可能是某种精确错误?
(4 / 3)
Run Code Online (Sandbox Code Playgroud)
这个子表达式有两个整数参数,所以它将用整数数学来完成.除法的结果是截断的,因此不是1.333333f结果1.
您可以通过使一个或两个数字浮点常量来修复它.
(4.0 / 3.0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |