float 4字型 大约(+ -)3.402 823 47E+38F
他这取值范围怎么算的.是2的多少次方? 还有那个47E+38F什么意思.
他这取值范围怎么算的.是2的多少次方? 还有那个47E+38F什么意思.
解决方案 »
- 一个逻辑问题
- 大家给解释几个java的名词,谢谢,文件管理,输入输出,graphic interface,AWT,Swing
- 请教有关静态成员变量的小问题
- java新手的问题 真的很困惑 求结
- 怎么把两个JPANEL的东西放到一个JPANEL里?
- 假如要你输入一个数,如何编写
- 一个初学者的问题
- 新手上路:编译问题,.JAVA文件能在SUNONE里面编译,但不能在DOS下编译,why?
- 急!!!如何在jsp中把byte[]转换成image,然后在applet中显示出来?(分数可以再加)
- 小弟在做corba的时候出了个问题,希望各位能坐答,在线给分!
- 为什么Random random = new Random();这个会报错?求解。
- String equals写法
float 类型数据的最小正非零值的常量,最小正非零值为2的-149次方
8 个指数位
23 个小数位
- -------- -----------------------
S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFFS - 符号位
E - 指数位
F - 小数位规定:正无穷大:S = 0, E = 11111111, F = 00000000000000000000000
负无穷大:S = 1, E = 11111111, F = 00000000000000000000000
NaN :S = 0, E = 11111111, F = 10000000000000000000000你网上找份 IEEE 754 的规范看一下就知道是怎么算的了
float f = 0x7fffffff;
float f1 = 0x7fffffc0;
float f2 = 0x7fffffbf;
比较f==f1,返回的是true;
比较f==f2,返回的是false;
是不是说存储数值位就占了26位(float共32位),其中符号位占一位?有可能是我有些地方没弄明白,请火龙果老大帮我弄清楚一下,谢谢?
你这样并不能表示二进制的符点数!!!!float f = 0x7fffffff;
float f1 = 0x7fffffc0;这两个数是整数值,并不是浮点数!加之 float 没那么高的精度,所以就相等了!如果想知道位域为 0x7fffffff 和 0x7fffffc0 所表示单精度浮点数的值是多少的话,需要这样:public class FloatHex { public static void main(String[] args) {
float f = Float.intBitsToFloat(0x7fffffff);
float f1 = Float.intBitsToFloat(0x7fffffc0);
float f2 = Float.intBitsToFloat(0x7fffffbf);
System.out.println(f);
System.out.println(f1);
System.out.println(f2);
}
}很显然,这三个值都是 NaN!float 要用 16 进制表示的话,需要这样:比如 8.125 就要写成:float f = 0x1.04p3f;
0 10000010 0000010000000000000000016 进制表示为:0x41020000float 的值为:(-1)^S * 1.P * 2^(E - 127)这里的 S = 0; P = 00000100000000000000000;E = 10000010(130)。2 进制为:1.00000100000000000000000B * 2^(130 - 127) = 1.000001B * 2^3
16 进制为:0x1.04p3F
浮点值为:0x1.000001 * 2^(130 - 127) = 1 + 2^(-6) * 2^3 = 1.015625 * 8 = 8.125
11111111 ff
11000000 c0
10111111 bf看有区别的低8位,前两者舍弃低7位并进位后是相同的,和bf结果不同