基本型别 大小 最小值 最大值
boolean —– —– ——
char 16-bit unicode 0 unicode 2^16-1
byte 8-bit -128 +127
short 16-bit -2^15 +2^15-1
int 32-bit -2^31 +2^31-1
long 64-bit -2^63 +2^63-1
float 32-bit ieee754 ieee754
double 64-bit ieee754 ieee754
void
注意!:表格里的^代表的是次方哈~
使用 float 类 节省开发时间
作者: builder.com
2004-11-16 11:50 am
即使你可能知道 ieee 浮点数,你可能也从来没有逐个比特地处理过这类数据。下面我将向你展示如何逐个比特地处理 ieee 浮点数,下次在你的 java 项目需要从比特序列创建浮点数时,或者从浮点数创建比特序列时,你就知道float 类可以为完成这一工作。
ieee 浮点数介绍
ieee 754 浮点单精度数字格式定义了一个用于存储浮点数的比特布局。在空比特布局中,一个比特留作符号位,八个比特留作指数,23个比特留作尾数。这些比特是按最重要比特到最不重要比特进行排列的,如下例所示:
31 0
| |
seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm
其中:
s = 符号位
e = 指数
m = 尾数
你可以从 ieee 的站点购买一份 ieee 浮点数的完整解释。(如果在线搜索 ieee 754,你应该可以找到免费的版本。)
float 对 java 社区的贡献
下面的示例程序使用 float 的两个方法将一个浮点数转成比特,然后又将这些比特转成一个浮点数。
使用float.floattointbits(float f) 方法可以将一个浮点数转成一个比特序列。这个方法返回一个32位整数,表示你作为参数提供的浮点数的 ieee 754 比特排列。
使用float.intbitstofloat(int bits) 方法可以进行反方向转换。这个方法接受传入的整数作为参数,将这些比特转成一个 ieee 浮点数。
下面是示例程序:
public class bitstip {
public static void main(string args[]) {
float f = float.parsefloat(args[0]);
int bits = float.floattointbits(f);
system.out.println("bits: " + bits);
system.out.println("back to float: " + float.intbitstofloat(bits));
}
}
如果你曾经必须要手工进行这种转换,那么你就会很欣赏这两个简单的方法为你节省的工作。如果你正在处理64位数,那么可以选择使用double 包装器(wrapper)类。这个类提供同样的方法处理ieee 754 双精度浮点数。
最好选择阅读一下javadoc,查阅里面有关浮点数与比特序列之间的转换的部分,以便完整地了解这些方法都能为你些做什么。
