java中long型变量为某几个乘积后不加L,怎么转成int值了??

longx=24*60*60*1000*1000;System.out.println(x);输出的结果为:500654080本来24*60*60*1000*1000=8... long x = 24 * 60 * 60 * 1000 * 1000;
System.out.println(x);
输出的结果为:500654080
本来 24 * 60 * 60 * 1000 * 1000=86400000000,但因为后面没有加L固被认为是int,86400000000超出int范围,所以计算机自动截取成int的值为500654080,搞不懂这是怎么转的怎么截取的?
哪位大师能够帮帮忙呀?求解答啊
展开
 我来答
唐四海RK
2014-08-28 · TA获得超过1498个赞
知道小有建树答主
回答量:269
采纳率:0%
帮助的人:194万
展开全部
原因在于java不具有‘目标确定类型’的特性(指存储结果的变量的类型会影响到计算所使用的变量类型),就是说java不会主动把你要计算的24*60*60*1000*1000变成你要存入的x变量的long类型,而是先以int类型进行计算,得到的应该是86400000000L,但是java把它当做int,存不下,溢出了,截取得到500654080再保存到int中, 最后int转成long赋值给x,最后的结果就不准确了;
避免这种情况的常用方法是给 第一个因子添加类型L;
建议看《java解惑》之迷题3:长整除部分有讲解

怎么截取的,我举个简单例子,java short类型的取值范围-32768~32767,当你是32768,那么超过,给你存入-32768,是32769,存入-32767.....以此类推。
jbflash
2014-08-28 · 超过13用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:28.5万
展开全部
long x = 24 * 60 * 60 * 1000 * 1000l;
在1000后面加个L 可以得到你想要的结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
261667318
2014-08-28 · TA获得超过898个赞
知道小有建树答主
回答量:680
采纳率:100%
帮助的人:641万
展开全部
分段乘
long x = (long)(24 * 60 * 60 * 1000) * 1000;
System.out.println(x);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
41515065782d0402
2014-08-28 · TA获得超过105个赞
知道答主
回答量:233
采纳率:0%
帮助的人:106万
展开全部
int的容量有限吧。
标准规范应该是要加l的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式