如果我有以下代码:
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为long
,8039/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/