如果我有以下代码:
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 和 3600
转换为 double ,您将得到正确的结果:
double dNumDays = lSecondsSum / (24 * 3600.0);
或者只是:
double dNumDays = lSecondsSum / 24.0 / 3600.0;
关于C++:简单的运算符优先级问题还是其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20578239/