一直使用float和double類型的變量,但從來還沒有弄懂過這兩種類型在計算機中怎么表示的。
首先了解一下十進制怎么表示小數:
1.在有限的小數位數里是無法表示所有的數的,例如1/3是無法寫成小數的,他們是無限循環小數,還有各種無理數無線不循環小數,例如π=3.14159265358979323......,
使用小數是無法精確的表示所有的數的。
2.小數的表述形式上有多種,這里主要介紹一下指數表現形式例如下面:
0.985 = 0.985 x 100
0.985 = 9.85 x 10-1
0.985 = 0.0985 x 101
二進制小數的表示和十進制的表示方法一樣,二進制小數也是無法表示所有的數的,例如十進制的(0.1)是不能表示為有限位的二進制小數的;
二進制小數也是可以表述成指數的形式的。
計算機表示方法,以下是IEEE754標准:
1、 IEEE 754 標准:
IEEE 754 標准成立於1985年,80年代起所有的計算機系統均支持IEEE 754
IEEE 754 對浮點數在計算機表示方法有三個主要的規定:
對於單精度(single precision):單精度浮點數位長:32位
(1) IEEE 754 標准規定:第1位為符號位,1 代表負,0代表正
(2) 接下來用8位來表示指數部分。
(3) 接下來的23位用來表示有效數位
IEEE 浮點標准表示: V = (-1)s * M * 2E
①、s 是符號位,為0時表示正,為1時表示負。
②、M為尾數,是一個二進制小數,它的范圍是0至1-ε,或者1至2-ε(ε的值一般是2-k次方,其中設k > 0)
③、E為階碼,可正可負,作用是給尾數加權。
一般我們主要使用的程序語言中是類型主要有float和double兩種,一種是單精度,一種是雙精度
float是單精度的,采用32位二進制表示,其中1位符號位,8位階碼以及23位尾數。double是雙精度的,采用64位二進制表示
例如下圖