请问 static double f = 0x11e30;
System.out.println("double "+f);
为什么会打印出double 73264.0

解决方案 »

  1.   

    public class test {
    static double f = 0x11e30;
    public static void main(String[] args) {
    System.out.println("double "+f);
    }
    }
    附上test程序
      

  2.   

    因为你System.out.println("double "+f); 是要打印出10进制的,而static double f = 0x11e30;
    是16进制的需要转换成10进制
      

  3.   

    0x11e30 的10进制就是73264.
    static double f=0x11e30;
    相当于:
    static double f =73264;
      

  4.   

    因为:static double f = 0x11e30; 这里f所赋予的值是:16进制的,
    但是在Java打印一个数的时候,基本上都是按照10进制的进行打印,因此:你所以打印出来的数据是73264.0。
    所以你不用担心咯!如果有兴趣的话,推荐你研究一下!找本JVM书来看!就会慢慢明白的!
      

  5.   

    感觉以上都没回答楼主的问题
    楼主应该是想要0x11e30转换为10进制算法
    也就是73264.0是怎么根据0x11e30算来的
    如果不是当我什么都没说每天回帖可得十分可用分  路过
      

  6.   


    我的理解:0x11=17    e30=10的30次方
    17*10的30次方!= 73264
    对于float的数据类型,书上说e前面必须有数,后面必须跟整数,如果30是16进制的话不就更大了,离73264更远了。
    我想可能是我对进制转换的理解存在错误,望各位大神花点宝贵的时间指正我的错误,解析一下进制具体是怎么转换的,小弟不胜感激
      

  7.   

    0x11e30中0x代表16进制数后边11e30就是16进制数的具体值
    所以0x11e30 = 1 * 16^4 + 1* 16^3 + 14 * 16^2 + 3*16^1 + 0 * 16^0 = 73264
    在16进制中 0-9就表示0-9, a 表示10, b表是11, c表示12, d表示13, e表示14, f表示15
    这里的e不是表示10的几次方的意思
      

  8.   


    e代表10的几次的说法是在10进制数情况下才有效果的,其他进制数是没有这个方法的,前边的0x代表16进制数,所以这里的e代表的就是14而不是10的多少多少次方了