浮點數的儲存以及 浮點數的比較

2021-06-21 07:43:35 字數 787 閱讀 5405

浮點數的儲存採用的是近似的原理:

float儲存格式為: 

s        e          m 

1位符號位 8位指數  23位尾數 

轉成數值即為:v=(-1)^s * 1.m * 2^(e-127) 

對於16.5轉成二進位制為00010000.1==>1.00001*2^4, 

那麼在記憶體的表示為: 

符號位    指數4+127 = 131      尾數 

0          10000011              00001 000000000000000000 

在轉換過程中由於需要往右移位, 可見對於float數整數部分越大,小數部分的精度就越低 

對float數來說有效數字約為7位(2^23約等於10^7),所以整數部分佔的位數越多,小數部分 

的精度就越低,當整數部分超過9999999後小數部分已經完全無精度了

要進行兩個浮點數的比較智慧型設定容忍的區間大小:

計算機表示浮點數(float或double型別)都有乙個精度限制,對於超出了精度限制的浮點數,計算機會把它們的精度之外的小數部分截斷。因此,本來不相等的兩個浮點數在計算機中可能就變成相等的了。例如:

float a=10.222222225,b=10.222222229

數學上a和b是不相等的,但在32位計算機中它們是相等的。

如果兩個同符號浮點數之差的絕對值小於或等於某乙個可接受的誤差(即精度),就認為它們是相等的。

不要直接用「==」或者「!=」對兩個浮點數進行比較,但是可以直接用「<」和「>」比較誰大誰小

浮點數比較

在數 算當中經常會涉及到判斷兩個數是否相等的情況 對於整數很好處理 a b這樣的乙個語句就可以解決全部的問題 但是對於浮點數是不同的 首先,浮點數在計算機當中的二進位制表達方式就決定了大多數浮點數都是無法精確的表達的 現在的計算機大部分都是數字計算機,不是模擬機,數字機的離散化的資料表示方法自然無法...

浮點數比較

部分 思路來自網路。fxxki整理發布。double變數以帶符號的 ieee 64 位 8 個位元組 雙精度浮點數形式儲存 它可以表示十進位制的15或16位有效數字.負值取值範圍為 1.79769313486231570e 308 到 4.94065645841246544e 324,正值取值範圍為...

浮點數比較

0 我們來看乙個程式 include int main else 1 執行結果 可以看出,我們輸入的2.3和計算出來的 4.6 2 相等,這個沒有問題。但是如果遇到下面這個問題 3 我們再來看一段程式 include include define eqs 1e 8 define equal a,b ...