请问各位高手:一个基础的表达式int 和long 取值范围问题,一个不容忽视的问题!!

dobad 2001-05-06 02:44:00
请看如下程序:
<%
int day=86400000;
int int_datetime=98;
java.util.Date currentDate=new java.util.Date();
out.println("<br>currentDate="+currentDate);
long currentTime=currentDate.getTime(); out.println("<br>currentTime="+currentTime);
long interval=day*int_datetime;
out.println("<br>Interval="+interval);
long contime=currentTime-day*int_datetime;
out.println("<br>contime="+contime);
out.println("<br><a href=scope.jsp>Refresh</a>");
//疑问:为什么int day=86400000 不正确,而 long day=86400000 正确
//对于 long interval=day*int_datetime;来讲,取值范围更大,
//然而day为int型,interval就为负值,而day为long时interval为正值
//int的取值范围是 -2147483648 to +2147483648
%>
敬请赐教!!!
...全文
125 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dobad 2001-05-08
  • 打赏
  • 举报
回复
谢谢tanghuan() 
tanghuan 2001-05-08
  • 打赏
  • 举报
回复
long interval=day*int_datetime;
其实,day*int_datetime为 int*int 运算后还是int呀
之后转化为long型

可以改为:long interval=day*(long)int_datetime;
skyyoung 2001-05-07
  • 打赏
  • 举报
回复
int的取值范围是 -2147483648 to +2147483648
long的取值范围是 64 -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,808
dobad 2001-05-07
  • 打赏
  • 举报
回复
对呀!但为什么interval为负值,interval是long呀,没有取值超出范围。

81,116

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧