1、浮點數的概念
浮點數也稱小數或實數。例如,0.0、75.0、4.023、0.27、-937.198 都是合法的小數。
C語言中採用float和double關鍵字來定義小數,float稱爲單精度浮點型,double稱爲雙精度浮點型,long double更長的雙精度浮點型。
2、測試float數據類型
C標準規定,float類型必須至少能表示6位有效數字,且取值範圍至少是10-37~10+37。
我們用以下代碼來測試float類型的特點。
示例
/*
* 程序名:book.c,此程序測試float的特徵
* 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
int main()
{
float ff2=9.9; // 測試2位的浮點數
printf("ff2=%f\n",ff2);
if (ff2==9.9) printf("ff2==9.9\n");
float ff5=99.999; // 測試5位的浮點數
printf("ff5=%f\n",ff5);
if (ff5==99.999) printf("ff5==99.999\n");
float ff6=999.999; // 測試6位的浮點數
printf("ff6=%f\n",ff6);
if (ff6==999.999) printf("ff6==999.999\n");
float ff7=9999.999; // 測試7位的浮點數
printf("ff7=%f\n",ff7);
if (ff7==9999.999) printf("ff7==9999.999\n");
float ff8=99999.999; // 測試8位的浮點數
printf("ff8=%f\n",ff8);
if (ff8==99999.999) printf("ff8==99999.999\n");
}
運行效果
從程序運行的結果可以看出float數的兩個特徵:
1)float數據類型表達的是一個近似的數,不是準確的,小數點後的n位有誤差,浮點數的位數越大,誤差越大,到8位的時候,誤差了1,基本上不能用了。
2)用“==”可以比較兩個整數或字符是否相等,但是,看起來相等的兩個浮點數,就是不會相等。
3、應用經驗
float浮點數有一些坑,例如兩個浮點數不相等和精度的問題,在實際開發中,我們經常用整數代替浮點數,因爲整數是精確的,效率也更高。
例如人的身高一米七五,以米爲單位,用浮點數表示是1.75米,如果以釐米爲單位,用整數表示是175。
在實際開發中,建議棄用float數據類型。二十年來,我從不使用它。
4、版權聲明
C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術網(www.freecplus.net)
作者:碼農有道