1.浮點數在計算機中的存儲機制ios
32bit:bit0~bit22存儲有效數字部分;bit23~bit30存儲指數部分;bit31存儲符號位spa
64bit:bit0~bit51存儲有效數字部分;bit52~bit62存儲指數部分;bit63存儲符號位code
例如:30.25get
二進制表示方法:11110.01,轉換爲二進制指數法:1.111001*2^4string
2.使用浮點數可能出現的精度損失it
#include <iostream> #include <string> using namespace std; void main() { char buff[100] = { '\0' }; float fa = 500.5;//存儲的時候轉換爲二進制111110100.1,存儲有效位的bit是足夠的,因此並不會有精度損失 float fb = 500.344;//111110100.0101100000000....後面多少位,懶得算了,存儲有效數字部分的bit應該是不夠的,因此存儲進來會出現精度損失 float fc = 500.125;//111110100.001,和第一種狀況同樣,bit足夠存儲有效位,因此不會有精度損失 //固然同理,double類型的數據也會出現以上狀況,只是所佔字節數不同罷了 getchar(); }
所以,是否會出現精度損失,與你的數據自己有關係,換句話說,就是小數點後面的部分能不能用有限位數的來表示,即n是否小於float或者double用於存儲有效爲的bit數。io
3.浮點數比較的方法-epsilon-方法class
假定存在兩個浮點數A,B,若是直接比較,是很是不明智的,能夠令X=A-B,再設定一個小的參考量e=0.0001(結合實際狀況設定),而後比較X與e之間的大小。stream