與數學中的實數的概念差不多,在乙個值的後面加上乙個小數點,該值就成為乙個浮點值,c語言中浮點型別有float、double和long double;
類似於科學記數法,稱為指數記數法或e記數法,e後面的數字代表數10的指數
整數沒有小數部分,浮點數有小數部分,表示的具體數字的個數相同
浮點數可以表示的範圍比整數大
在任意區間內,存在無窮多個實數,所以計算機的浮點數不能表示區間內的所有的值,表示不精確,可以試著列印輸出123456789;
通常浮點數只是實際值的近似值,7.0可能儲存為浮點值6.999999
float 與double 型別的資料在計算機內部的表示方式相同,都分為:符號位(最高位),指數部和尾數部,因所佔儲存空間不同,故所能夠表示的數值範圍和精度不同;
型別符號位
指數部尾數部
float
1(第31位)
8(第23~30位)
23(0~22)
double
1(第63位)
11(第52~62位)
52(0~51)
十進位制小數轉換成二進位制小數採用"乘2取整,順序排列"法。
用2乘十進位制小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數 部分,又得到乙個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。 然後把取出的整數部分按順序排列起來,先取的整數作為二進位制小數的高位有效位,後取的整數作為低位有效位。
10.125*2 = 0.25 獲得整數 0
20.25 *2 = 0.5 獲得整數 0
30.5 *2 = 1 獲得整數 1
4 ==> 0.125 = 0.001
十進位制整數轉換為二進位制整數採用"除2取餘,逆序排列"法。
用2去除十進位制整數,可以得到乙個商和餘數;再用2去除商,又會得到乙個商和餘數,如此進行,直到商為零時為止,然後把先得到的餘數作為二進位制數的低位有效位,後得到的餘數作為二進位制數的高位有效位,依次排列起來。
18/2 = 4······0 獲得餘數 0
24/2 = 2······0 獲得餘數 0
32/2 = 1······0 獲得餘數 0
41/2 = 0······1 獲得餘數 1
5 ==> 8 = 1000
浮點數轉換成二進位制
用科學記數法表示二進位制浮點數
計算指數偏移後的值
注:計算指數時需要加上偏移量,偏移量的值與型別有關(float為127,double型別為1024)
1float
8.125 = 1000.001 = 1.000001 * 2^3
23 符號位: 0
45 指數部分:3+127 = 130 = 1000
0010
67 小數部分:00000189
01000
0010
0000
01000
0 000
0 000
0 000
0 010 ==>
110100
0001
0000
0010
0000
0000
0000
0000
120x410
2000
0
**驗證:
1//c 列印輸出浮點型資料使用轉換說明%f
2 #include3
intmain()410
//c++
11 #include 12
using
namespace
std;
13int
main()
14
6.1上溢:當計算導致數字過大,超過當前型別能表達的範圍時,就會發生上溢,現代c將浮點型上溢賦予乙個特殊值inf(inf)或infinity
6.2下溢:當浮點數的指數部分已經是最小值,即現有的可用位來表示最小,將該數除以2,計算機只好將尾數部分的位右移一位;以十進位制為例,0.1234e-10 / 10 ==> 0.0123e-10;
6.3nan:not a number的縮寫,例如將給asin()函式(給定乙個數值,返回乙個角度,該角度的正弦值為該數值)傳遞乙個大於1的數值,該函式行為未定義,該函式此時將返回乙個nan值
MQL5 真實型(雙精度型,浮點型)
真實型 或浮點型 以小數部分為代表值,在mql5語言裡,浮點型資料有兩種型別,在記憶體中實型資料的表示方法由 ieee 754水平規定,它並不依賴平台 作業系統和程式語言。型別位元組大小 最小正值 最大值c 類似物 float 41.175494351e 38 3.402823466e 38 flo...
基本型別間的型別轉換 數值型
今天一開啟部落格,看到左上角的園齡5年,目光有些恍然,昔日作為學生上課的情景 已經慢慢變的模糊。是啊 畢業已經3年有餘,時光不再來.一 原碼和補碼 在步入正文說型別轉換之前,先做乙個小鋪墊,了解一下原碼和補碼。注 由於同乙個數字在用不同位數的原碼或補碼表示時 結果不同,所以如無特殊說明 該小節下出現...
資料基本型別及對應基本型別類
基本資料型別 char 16位 byte 8位 short 16位 int 32位 long,float,double,boolean 基本資料型別對應類 character,byte,short,integer,long,float,double,boolean,string 幾乎所有型別類都有相...