如果我有以下代码:

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 and 3600转换为double,则会得到正确的结果:

double dNumDays = lSecondsSum / (24 * 3600.0);

要不就:
double dNumDays = lSecondsSum / 24.0 / 3600.0;

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

10-12 04:43