IT Notes‎ > ‎Java‎ > ‎Java Language‎ > ‎

Java中的小数可以使用十六进制

支持十六进制小数是从JDK 5开始的一个特性。但它对定义有比较多的限制:
必须以0X或者0x开头
必须以PN或者pN结束。p或者P相当于十进制小数中使用科学计数法时的e或者E,N是一个十进制数。
假设一个数字定义成double d = 0xa.eP3,它表示的值为 (10 + 14*(16^(-1))) * 2^3,也就是它限定用科学计数法表示,但底数不是16,而是2,这点也要注意。

下面是两个非法的定义方式:
float f = 0x13.a是非法的。
double d = 0x1a.e也是非法的。
改成如下的就可以了:
float f = 0x13.ap0f;
double d = 0x1a.ep0d;

上面不是规范的科学计数法表示了,只是为了通过编译,加以p0在尾部而已。

参考:
我在在JW@TW上的提问
Five Favorite Features from 5.0中的Hexadecimal Floating Point Literals部分。
ċ
What022.java
(1k)
Iridium Cao,
Jul 14, 2008, 9:15 AM
Comments