日期:2014-05-20  浏览次数:20657 次

基本数据类型问题
请问 static double f = 0x11e30;
System.out.println("double "+f);
为什么会打印出double 73264.0

------解决方案--------------------
因为你System.out.println("double "+f); 是要打印出10进制的,而static double f = 0x11e30;
是16进制的需要转换成10进制
------解决方案--------------------
0x11e30 的10进制就是73264.
static double f=0x11e30;
相当于:
static double f =73264;

------解决方案--------------------
11e30不就是73264么
------解决方案--------------------
探讨
0x11e30 的10进制就是73264.
static double f=0x11e30;
相当于:
static double f =73264;

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

------解决方案--------------------
感觉以上都没回答楼主的问题
楼主应该是想要0x11e30转换为10进制算法
也就是73264.0是怎么根据0x11e30算来的
如果不是当我什么都没说

每天回帖可得十分可用分 路过
------解决方案--------------------
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的几次方的意思
------解决方案--------------------
探讨
引用:
0x11e30 的10进制就是73264.
static double f=0x11e30;
相当于:
static double f =73264;


我的理解:0x11=17 e30=10的30次方
17*10的30次方!= 73264
对于float的数据类型,书上说e前面必须有数,后面必须跟整数,如果30是16进制的话不就更大了,离73264更远……