黑马程序员技术交流社区

标题: 运算的特殊情形 [打印本页]

作者: 暴风    时间: 2014-9-26 00:27
标题: 运算的特殊情形
1.System.out.println(3 / 0);   异常
2.System.out.println(3.0 / 0);  Infinity
3.System.out.println(3 % 0);    异常
4.System.out.println(3 % 0.0);  NAN
5.System.out.println(3.0 % 0);  NaN


谁能解释一下为何输出结果是这样?


作者: fantacyleo    时间: 2014-9-26 01:25
这个涉及到一些底层知识,其实没必要太关注。我简单说说吧:
整数除法如果除数为0,cpu会发出一个异常信号,当然这不必然导致JVM也抛出一个异常。怎么处理cpu发出的异常,是操作系统和JVM的事,只不过JVM恰好选择了抛出异常而已。

浮点除法的除数为0,就涉及到浮点数表示的问题。Java的浮点数表示采用IEEE754标准,按这个标准表示的浮点数包含3个特殊情况:正、负无穷大和NaN(not a number) 所以你会看到Infinity和NaN

作者: 暴风    时间: 2014-9-26 20:52
fantacyleo 发表于 2014-9-26 01:25
这个涉及到一些底层知识,其实没必要太关注。我简单说说吧:
整数除法如果除数为0,cpu会发出一个异常信号 ...

嗯!多谢了大虾!
作者: 牛兴亮    时间: 2014-9-27 08:41
fantacyleo 发表于 2014-9-26 01:25
这个涉及到一些底层知识,其实没必要太关注。我简单说说吧:
整数除法如果除数为0,cpu会发出一个异常信号 ...

领教了,威武




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