黑马程序员技术交流社区

标题: 简单小程序,但是怎么答案就是0呢。。求大神! [打印本页]

作者: 曾翀    时间: 2014-7-24 17:05
标题: 简单小程序,但是怎么答案就是0呢。。求大神!
public class lianxi
{
        public static void main(String []args)
         {
                int sum=1;
                for(int i=1;i<=100;i++)
                 {
                        sum*=i;
                 }
                   System.out.println(sum);
         }                 
}
         
请问我程序那出错 了,每次都是0,复制别人的就是100内乘积!哎。。。
作者: star5603    时间: 2014-7-24 17:23
已经超出了int的上限了,溢出了。
你这用long型都没法装。只能用BIgInteger,如果单纯只是算结果的话。

作者: 韩天雷    时间: 2014-7-24 17:30
9.33262154439441E157
作者: 戒风    时间: 2014-7-24 18:23
溢出了,,
作者: 彬锐    时间: 2014-7-24 18:23
其实你可以自己调试一下看看  把输出语句放在for循环里面 看看每次得出的结果是多少
作者: a191170796    时间: 2014-7-24 20:56
很简单int表示的范围是-2147483648~2147483647,你的答案已经超出范围,所以给你个0.
作者: lemon_tree    时间: 2014-7-24 21:08
en   结果溢出了
作者: 郭良    时间: 2014-7-24 21:10
来学习学习
作者: 孤守星空    时间: 2014-7-24 21:11
看来要考虑很多
作者: 碎流    时间: 2014-7-24 21:16
我也是来学习的,,
作者: David.L    时间: 2014-7-24 21:28
来学习的,确实也没考虑到溢出:L真失败
作者: 恣意的豆腐    时间: 2014-7-24 21:29
原来如此,学习了
作者: 波风梅西    时间: 2014-7-24 21:38
还真没注意到这些
作者: 刘一阳    时间: 2014-7-24 21:44
确实不好想到啊
作者: 止询初衷    时间: 2014-7-24 21:47
你考虑过int的感受么
作者: 伊甸拾忆    时间: 2014-7-24 21:48
100的阶乘数值的确很大,int装不下
作者: chensuyu    时间: 2014-7-24 21:52
溢出了int类型的范围是2*32
作者: 南柯一梦    时间: 2014-7-24 22:34
这是java特性造成的,当存储范围过大,装不下时会发生内存溢出,返回0
作者: 曾翀    时间: 2014-7-24 22:52
彬锐 发表于 2014-7-24 18:23
其实你可以自己调试一下看看  把输出语句放在for循环里面 看看每次得出的结果是多少  ...

哈哈,谢谢
作者: 曾翀    时间: 2014-7-24 22:54
star5603 发表于 2014-7-24 17:23
已经超出了int的上限了,溢出了。
你这用long型都没法装。只能用BIgInteger,如果单纯只是算结果的话。
...

谢谢。。。。。哈哈
作者: 单线程xia    时间: 2014-7-24 22:59
超出int的范围了。。另外这数已经很巨大了,别人做的都是100内的累加把
作者: 付士长    时间: 2014-7-24 23:11
真的没看出来哪错了:L
作者: sunshine9091    时间: 2014-7-24 23:21
我们写程序会形成思维定势,一定以常量或者变量就是int,所以写程序要多思考。呵呵
作者: dingpanbo    时间: 2014-7-24 23:26
恩,来看看
作者: alive    时间: 2014-7-24 23:30
也是没想到 学习了!
作者: 席杰    时间: 2014-7-25 00:00
学习了,以后还真的注意一些!
作者: zll0214    时间: 2014-7-25 00:24
那是因为最终数据超出了int类型的范围,造成的精度丢失
作者: wisely    时间: 2014-7-25 03:35
话说,这个真的是溢出么?

俺看不是溢出,而是当阶乘到某个数时,正好到了0的位置,剩下的再往上乘就全是0了。这个数应该是34.

溢出的意思是转圈,不是0吧。
作者: 阿磊    时间: 2014-7-25 09:18
哈哈哈哈哈
作者: huanglyhf    时间: 2014-7-25 15:16
学习了!哈哈!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2