java中long与int转换的问题

MyBurden 2017-04-13 10:06:18
如图
目的是将秒数表示的时间转换为字符串日期时间

上图是秒数
经过将秒数乘以1000变成毫秒数后,
long now = 下图

是由于int的长度不够,但是long now = 1491118634 * 1000为什么会变成764982288,求各位大神解惑
...全文
554 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
墨笙弘一 2017-04-14
  • 打赏
  • 举报
回复
应该是两个Int相乘 超出int范围了 后续操作应该和二进制有关系
闲云小鹤 2017-04-14
  • 打赏
  • 举报
回复
long now = 1491118634 * 1000 为什么变成764982288 先执行的 1491118634 * 1000 因为 1491118634和1000 都是int 所以得出来的值也是int类型 1491118634 * 1000 超过了 int的最大值 为什么等于764982288 举个例子int最大值2147483647+1 = -2147483648 你就知道了
  • 打赏
  • 举报
回复

long now = 1491118634L * 1000;
要这么写,运算之前就指明是long类型的。要不然会先为int,数值过大就不可预期了,然后又把不准确的数值转为long,这样就出错了
MyBurden 2017-04-13
  • 打赏
  • 举报
回复
3q,我知道怎么把他改正确,需要把要转换的int先变为long再扩大长度. 但是我想知道的是long now = 1491118634 * 1000是怎么样变为764982288这个数的

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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