JAVA DOUBLE计算方法

double dayCount = 0;
long startTime= rs.getLong(3);
long unSubTime = rs.getLong(4);
dayCount = (unSubTime - startTime) / 86400000;
现在 断点一下看 unSubTime 等于1275373946000 startTime=1275321600000
算出来 应该是0.6几 为什么dayCount 会是0.0呢?

java中..计算表达式的结果类型..是该表达式中类型最大的..这是为了避免丢失数据..

比如int + long结果类型是long型..
int + float 结果类型是float..

你的计算式中最大的是long..所以结果是long..所以算出来的结果不会是小数..就是0了..然后你将0这个long型赋值给一个double..他就看能不能将他转为double..因为double比long大..所以可以....就成了0.0了..如果你赋值给一个int就会编译报错了..因为他不能long转为int..会丢失精度..除非强制转换..

所以你需要将一个数转换为double..在计算..
(unSubTime - startTime) / 86400000.0这样就没有问题了..
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-29
两个整形(长整形)的运算,java会自动将结果取整的。
至少得保证一个参数为double型,
如:
dayCount = (unSubTime - startTime) / 86400000.0;本回答被提问者采纳
第2个回答  2010-07-29
需要强制转换
相似回答