01 class Question3
02 {
03 public static void main(String args[])
04 {
05 double d1=1.0;
06 double d2=0.0;
07 byte b=1;
08 d1=d1/d2;
09 b=(byte)d1;
10 System.out.print(b);
11 }
12 }重点帮解释下08和09的代码机器是怎么算的。谢谢大家。
02 {
03 public static void main(String args[])
04 {
05 double d1=1.0;
06 double d2=0.0;
07 byte b=1;
08 d1=d1/d2;
09 b=(byte)d1;
10 System.out.print(b);
11 }
12 }重点帮解释下08和09的代码机器是怎么算的。谢谢大家。
public static final double POSITIVE_INFINITY = 1.0 / 0.0;
而b=(byte)d1;截取了后几位,所以打印-1
POSITIVE_INFINITY
public static final double POSITIVE_INFINITY保持 double 类型的正无穷大的常量。它等于 Double.longBitsToDouble(0x7ff0000000000000L) 返回的值。
这种转换没有看到什么规范,可以理解为转换成最大的值
如果时int和long都是最大值
转成byte和short都成-1
这个有钻牛角了
ha ha,现在听大家一说总算明白了,自己感觉这题出得有点应试化,过于细节,有点钻牛角,而且实际应用并不多。
网友 jlusdy(LOST) 和 chenxk(射线) 解答的很好,说重要害。
此题出处:《二级java语言程序设计》李季 高辉 等编著 isbn:7-302-10471-9
在148页第22题。
再次谢谢大家。