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的代码机器是怎么算的。谢谢大家。

解决方案 »

  1.   

    Double api 正负无穷大就是这样定义的
    public static final double POSITIVE_INFINITY = 1.0 / 0.0;
    而b=(byte)d1;截取了后几位,所以打印-1
      

  2.   

    public static final double POSITIVE_INFINITY = 1.0 / 0.0;
    POSITIVE_INFINITY
    public static final double POSITIVE_INFINITY保持 double 类型的正无穷大的常量。它等于 Double.longBitsToDouble(0x7ff0000000000000L) 返回的值。
      

  3.   

    正无穷大很好理解
    这种转换没有看到什么规范,可以理解为转换成最大的值
    如果时int和long都是最大值
    转成byte和short都成-1
    这个有钻牛角了
      

  4.   

    我是楼主:
       ha ha,现在听大家一说总算明白了,自己感觉这题出得有点应试化,过于细节,有点钻牛角,而且实际应用并不多。
       网友 jlusdy(LOST) 和 chenxk(射线) 解答的很好,说重要害。
       此题出处:《二级java语言程序设计》李季 高辉 等编著 isbn:7-302-10471-9
    在148页第22题。
    再次谢谢大家。