论坛首页 Java企业应用论坛

int a=200*100000000;a =

浏览 12982 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (3)
作者 正文
   发表时间:2011-10-10  
楼主, 1 - 0.9 等于多少?
那这句:
System.out.println(1-0.9);
是不是也该抛出异常??
0 请登录后投票
   发表时间:2011-10-10  
这些有什么值得争论的???
0 请登录后投票
   发表时间:2011-10-10  
你想象的这个异常是语言层面的概念
溢出只会溢出标志位至位,不会有signal,大多数的溢出在硬件层面和OS层面都被认为是正常情况
除0有异常是因为除0在OS层面就就会有signal,在上层语言是否封装成exception这个要看上层语言的编译实现
cpu会对除0产生中断是因为cpu自己也无法处理除0操作
0 请登录后投票
   发表时间:2011-10-10  
实际上更微妙的异常是堆栈溢出,在jvm,vc,mingw,gcc下面各不一样
0 请登录后投票
   发表时间:2011-10-10  
aa87963014 写道
a=-1474836480;!!!!!!!!

无法理解,如果说int值溢出为什么不直接抛出异常?
有一个地方前端没限制输入,后台也没验证输入。

当输入如:100000000(一亿)之后服务器计算之后所有数值一切正常。因为200*100000000为一个负数!
也因为这样绕过了验证(服务端所有地方从来都没有考虑过负数的情况,也没有对有负数的地方验证)
由此:1-(-1474836480) 那么久变成了1474836480+1,照成了异常数值。

如何处理这种情况?真心觉得这种结果为负数的设计完全就是神经病,为什么不直接抛出异常


这个数太大了,你最好别用int,应该选用byte,这个范围就够了。
0 请登录后投票
   发表时间:2011-10-10  
骨之灵魂 写道
楼主, 1 - 0.9 等于多少?
那这句:
System.out.println(1-0.9);
是不是也该抛出异常??


数据类型转换 换不了就抛异常 有什么问题?
0 请登录后投票
   发表时间:2011-10-10  
饭煮糊了怪锅不好,明明知道int乘int用一个int可能装不下,你硬是要装,装出问题来了还怪别人为什么不提醒你。唉!悲剧!
0 请登录后投票
   发表时间:2011-10-10  
lyl_pages 写道
饭煮糊了怪锅不好,明明知道int乘int用一个int可能装不下,你硬是要装,装出问题来了还怪别人为什么不提醒你。唉!悲剧!

对你来说“饭煮糊了怪锅”
对于现在的社会来说,已经没有煮糊饭的锅/电饭煲了。
这个就是进步。
0 请登录后投票
   发表时间:2011-10-10   最后修改:2011-10-10
aa87963014 写道
lyl_pages 写道
饭煮糊了怪锅不好,明明知道int乘int用一个int可能装不下,你硬是要装,装出问题来了还怪别人为什么不提醒你。唉!悲剧!

对你来说“饭煮糊了怪锅”
对于现在的社会来说,已经没有煮糊饭的锅/电饭煲了。
这个就是进步。


典型的胡搞蛮缠,隐了吧。还是joel说得好,学校只教java真是害死人。
0 请登录后投票
   发表时间:2011-10-10  
aa87963014 写道
骨之灵魂 写道
楼主, 1 - 0.9 等于多少?
那这句:
System.out.println(1-0.9);
是不是也该抛出异常??


数据类型转换 换不了就抛异常 有什么问题?

这不是数据类型转换的问题吧,分明就是和浮点数在内存中的表示有关系啊
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics