1,三個(gè)部分
4字節(jié)的單精度浮點(diǎn)數(shù)32個(gè)位分3個(gè)部分:
1.1,從左往右第一位是符號(hào)位,0正1負(fù);
1.2,緊接的8個(gè)位是指數(shù)部分,不要糾結(jié)是原碼,反碼還是補(bǔ)碼,只是一個(gè)不帶符號(hào)位的二進(jìn)制數(shù),都一樣。取值區(qū)間是[0,255],0和255有特殊含義;取值在[1,254]的情況下,需要減去127才是真正的指數(shù)值,這時(shí)指數(shù)取值是[-126,127]。
1.3,剩余的23位是尾數(shù)部分,用于表示浮點(diǎn)數(shù)的小數(shù)部分;也是一個(gè)不帶符號(hào)位的二進(jìn)制數(shù)。
2,指數(shù)部分
2.1,當(dāng)指數(shù)部分是0,且尾數(shù)部分為全0的情況,這表示浮點(diǎn)數(shù)0;加上符號(hào)位表示正負(fù)0。
2.2,當(dāng)指數(shù)部分是0,且尾數(shù)部分不為0的情況,其實(shí)際指數(shù)是-126,二進(jìn)制表示的科學(xué)計(jì)數(shù)法的浮點(diǎn)數(shù)的整數(shù)部分按0解析。
2.3,當(dāng)指數(shù)部分是255,且尾數(shù)部分為全0的情況,表示一個(gè)無(wú)窮數(shù);加上符號(hào)位表示正反無(wú)窮。
2.4,當(dāng)指數(shù)部分是255,且尾數(shù)部分不為0的情況,表示不是一個(gè)有效數(shù)字,NaN。
2.5,當(dāng)指數(shù)部分取值為[1,254]的情況,需要減去127才是實(shí)際指數(shù)值,二進(jìn)制表示的科學(xué)計(jì)數(shù)法的浮點(diǎn)數(shù)的整數(shù)部分按1解析。
3,浮點(diǎn)書的規(guī)約形式與非規(guī)約形式
3.1,上述的第二種情況的浮點(diǎn)數(shù)稱為非規(guī)約浮點(diǎn)數(shù);上述的第五種情況的浮點(diǎn)數(shù)稱為規(guī)約浮點(diǎn)數(shù)。
3.2,最小的規(guī)約浮點(diǎn)數(shù)是指數(shù)部分是1(實(shí)際指數(shù)是-126),尾數(shù)部分為全0的時(shí)候,絕對(duì)值為1 * 2 ^ -126 ;
次小的規(guī)約浮點(diǎn)數(shù)是指數(shù)部分為1,尾數(shù)部分最低位為1其余位為0的時(shí)候,絕對(duì)值為1.000...1 * 2 ^ -126;
它們之間的絕對(duì)差值為(1.000...1 - 1) * 2 ^ -126 = 2 ^ -23 * 2 ^ -126 = 2 ^ -149;
而最小規(guī)約數(shù)與0的絕對(duì)差值是1 * 2 ^ -126 = 2 ^ -126。
在坐標(biāo)軸的表現(xiàn)是,兩個(gè)非0的規(guī)范浮點(diǎn)數(shù)的間隔很小,而最小規(guī)約浮點(diǎn)數(shù)與0的間隔很大,差距是23倍。
3.3,引入非規(guī)約形式的浮點(diǎn)數(shù),可以使得0與最小規(guī)約浮點(diǎn)數(shù)的間隔變得均勻起來(lái),并且間隔與兩個(gè)相鄰規(guī)約浮點(diǎn)數(shù)的間隔一致。
兩個(gè)非規(guī)約浮點(diǎn)數(shù)的間隔都是0.000...1 * 2 ^ -126 = 2 ^ -149。
3.4,最大的非規(guī)約數(shù)是0.111...111 * 2 ^ -126,最小的規(guī)約數(shù)是1.000..0 * 2 ^ -126;
最大的非規(guī)約總是小于最小的規(guī)約數(shù),也可以認(rèn)識(shí)近似相等。
4,浮點(diǎn)數(shù)舍入
4.1,四舍六入五成雙。
Math.Round()
4.2,向0(截?cái)啵┥崛?/span>
整型強(qiáng)制轉(zhuǎn)換
4.3,向負(fù)無(wú)窮大
Math.Floor()
4.4,向正無(wú)窮大
Math.Ceiling()