浮點數的存儲形式
浮點數按照在內存中所占字節數和數值范圍,可以分為浮點型,雙精度浮點型和長雙浮點型數。
?
?代碼:
printf("lgn:%e \n", pow(exp(1), 100));printf("lgn:%f ", pow(exp(1), 100));
輸出結果:
exp(1)是e的一次方,pow是以e為底數,100為指數的雙精度浮點型。
小數形式在C計算機中有兩種形式顯示
%f 小數點形式輸出
%e 小數+指數形式輸出
?
浮點數的運算
代碼:
float pi = 3.14159261111234331;float x = 3.141592711113343;if(x > pi) printf("pi is min\n");if(x == pi) printf("pi is equal");else printf("pi is not equal!");
?輸出結果:
?
浮點數的運算在計算機中其實比較復雜,拿浮點數的加法運算來講。
第一步:對階
加數和被加數需要先把指數調整為一致,一般通過左移或者右移來實現對階。
第二步:尾數相加
對階完成以后,再進行位數的有效位相加。按位與實現加法運算。
第三步:規格化
規格化是指浮點數的符號位進行取1還是取0操作,有左規和右規。具體的可以看一下組成原理,這里只是介紹一下。
fabs函數
在很多實際問題中,求值一般是近似解。如用牛頓迭代法求解方程的解,確定根的大小智能近似的滿足方程。需要fabs來處理浮點數的運算。
if((fabs(x-pi) < 0.0000001)) return;
用這種方法來比較x與pi是否相等,精確范圍為小數點的位數。x與pi的差的絕對值如果在0.00000001內,則認為相等,否則不相等。