float浮点用32个二进制位表示:
第1位S代表正负号: 0为正数, 1为负数
第2-9位E是阶码,代表2的指数次方, 指数=阶码-127
第10-32位代表尾数1.M
阶码取值范围在1-254时, f=(-1)^S * 1.M * 2^(E-127)
例如11=1.375*2^3 = (-1)^0 * [1+(0+*0.25+*0.125)] * 2^(128+2-127)
因此11f 用二进制表示成 0 10000010 01100000000000000000000
最大浮点数 Float.MAX_VALUE=[1+1-2^(-23)]*2^(254-127)=2^128-2^104=3.4028*10^38
Float精度是23个位二进制位,约等于千万分之一
能保证该精度的最小值 Float.MIN_NORMAL=1*2^(1-127)=2^(-126)=0 00000001 00000000000000000000000
阶码取255时,尾数M全为零时是正负无穷大; 尾数不全为零时是NaN
阶码取0时,f=(-1)^S * 0.M * 2^(-126) 此时精度小于23位
Float能表示出的最小值 Float.MIN_VALUE=2^(-23-126)=2^(-149)=1.4*10^(-45)=0 00000000 00000000000000000000001
因此 Float.MIN_VALUE/1.99f=Float.MIN_VALUE Float.MIN_VALUE/2.0f=0