Java:为什么这个乘法的计算结果和正确结果差那么多呢?

publicclassDemo{publicstaticvoidmain(String[]str){System.out.println(1000*3600*24*30*... public class Demo
{
public static void main (String [] str)
{
System.out.println(1000*3600*24*30*2);
}
}
输出:889032704

但是使用计算器的结果是:5184000000
展开
 我来答
654389326
2014-02-24 · TA获得超过815个赞
知道答主
回答量:216
采纳率:0%
帮助的人:145万
展开全部
超过Int的范围了,你可以这样写:
public class Demo
{
public static void main (String [] str)
{
System.out.println(1000L*3600*24*30*2);
}
}
这样会自动转成long类型
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
love爱有缘
2014-02-24 · TA获得超过1041个赞
知道小有建树答主
回答量:789
采纳率:0%
帮助的人:697万
展开全部
1000*3600*24*30*2 默认返回的是int 而 int是有取值范围的,当超出范围的时候,就不正确啦结果
你可以这么做1000L*3600*24*30*2 这样结果返回就是long 答案就没问题啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ankuino1
2014-02-24
知道答主
回答量:8
采纳率:0%
帮助的人:10.2万
展开全部
你的计算结果超出了int类型的取值范围
转成一个大点的数据范围比如 double 如下:
System.out.println((double) 1000*3600*24*30*2);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yugi111
2014-02-24 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
超过整型的范围了,网页搜下java的数据类型的范围吧,基础的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
疯子317
2014-02-24
知道答主
回答量:18
采纳率:0%
帮助的人:6.6万
展开全部
数值越界了应该是。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式