C++:简单的运算符优先级问题还是其他?

标签 c++ visual-c++

如果我有以下代码:

long lSecondsSum = 8039;
double dNumDays = lSecondsSum / (24 * 3600);

我希望得到 0.093044,但出于某种原因我得到了 dNumDays = 0.0000000000

但是,如果我这样写代码:

long lSecondsSum = 8039;
double dNumDays = lSecondsSum/24;
dNumDays = dNumDays/3600;

然后我得到正确的 dNumDays = 0.092777777777777778

如何避免所有这些浮点错误?

最佳答案

lSecondsSum 是 long8039/86400 将是 0

如果将 24 和 3600 转换为 double ,您将得到正确的结果:

double dNumDays = lSecondsSum / (24 * 3600.0);

或者只是:

double dNumDays = lSecondsSum / 24.0 / 3600.0;

关于C++:简单的运算符优先级问题还是其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20578239/

相关文章:

java - Java 库是否具有 C++ 中的 std::lower_bound() 、 std::upper_bound() 之类的函数?

c++ - 在opengl中在z方向上更改将2d纹理应用于单个立方体表面

c++ - 由于 "Error LNK2028: unresolved token...",我无法编译解决方案

windows - 我如何在 Windows 中为类似/dev/null 的东西调用 CreateFile?

c++ - 如何使用参数中传递的初始值而不是更新后的值进行后续计算?

c++ - VS 2012 中的条件运算符类型转换

c++ - 尝试对数组进行排序

C++ 如果我将参数参数从 int* 更改为 int,这些函数的调用将如何改变

c++ - gluPerspective 与 SFML : same compilation, 不同的结果。图形不显示

c++ - VS2010 和 OpenCV : Stack around a variable was corrupted