请问 static double f = 0x11e30;
System.out.println("double "+f);
为什么会打印出double 73264.0
System.out.println("double "+f);
为什么会打印出double 73264.0
解决方案 »
- 有关正则码的问题~~~
- 设Ch是一个字符变量,写出下列问题对应的表达式
- 两个用String类型表示的ip地址,该如何比较大小呢? 类似C中inet_addr的功能
- 已经有一个主frameA,点菜单即同时打开frameB,那frameA如何能得到frameB中的jtextfield的值并做处理?
- 有谁用过JNI(JDK+BC)?
- 请问谁有关于JNI的资料,最好是关于VC的
- 这是一个关于blank final variable的问题
- CMP2.0 relationships问题:
- 当头一棒 java.swing not found in import
- 关于JB的窗口问题?
- 老师教做软件,连接数据库,数据库在我这机子上,别人用我的软件,如何连接我的数据库呢?请帮下小忙!!!
- java.io.FileNotFoundException(拒绝访问),在线等答案!!!!
static double f = 0x11e30;
public static void main(String[] args) {
System.out.println("double "+f);
}
}
附上test程序
是16进制的需要转换成10进制
static double f=0x11e30;
相当于:
static double f =73264;
但是在Java打印一个数的时候,基本上都是按照10进制的进行打印,因此:你所以打印出来的数据是73264.0。
所以你不用担心咯!如果有兴趣的话,推荐你研究一下!找本JVM书来看!就会慢慢明白的!
楼主应该是想要0x11e30转换为10进制算法
也就是73264.0是怎么根据0x11e30算来的
如果不是当我什么都没说每天回帖可得十分可用分 路过
我的理解:0x11=17 e30=10的30次方
17*10的30次方!= 73264
对于float的数据类型,书上说e前面必须有数,后面必须跟整数,如果30是16进制的话不就更大了,离73264更远了。
我想可能是我对进制转换的理解存在错误,望各位大神花点宝贵的时间指正我的错误,解析一下进制具体是怎么转换的,小弟不胜感激
所以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的几次方的意思
e代表10的几次的说法是在10进制数情况下才有效果的,其他进制数是没有这个方法的,前边的0x代表16进制数,所以这里的e代表的就是14而不是10的多少多少次方了