C語言double數據類型介紹、示例和應用經驗

1、浮點數的概念

浮點數也稱小數或實數。例如,0.0、75.0、4.023、0.27、-937.198 都是合法的小數。

C語言中採用float和double關鍵字來定義小數,float稱爲單精度浮點型,double稱爲雙精度浮點型,long double更長的雙精度浮點型。

2、測試double數據類型

C標準規定,double類型必須至少能表示10位有效數字,且取值範圍至少是10-37~10+37

我們用以下代碼來測試double類型的特點。

示例

/*
 * 程序名:book.c,此程序測試double的特徵
 * 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h> 

int main()
{
  double ff2=9.9;   // 測試2位的浮點數
  printf("ff2=%lf\n",ff2);
  if (ff2==9.9) printf("ff2與9.9相等。\n");

  double ff12=999999999.99;   // 測試12位的浮點數
  printf("ff12=%lf\n",ff12);
  if (ff12==999999999.99) printf("ff12與999999999.999相等。\n");

  double ff13=9999999999.99;   // 測試13位的浮點數
  printf("ff13=%lf\n",ff13);
  if (ff13==9999999999.99) printf("ff13與9999999999.999相等。\n");

  double ff14=99999999999.99;   // 測試14位的浮點數
  printf("ff14=%lf\n",ff14);
  if (ff14==99999999999.99) printf("ff14與99999999999.999相等。\n");

  double ff15=999999999999.99;   // 測試15位的浮點數
  printf("ff15=%lf\n",ff15);
  if (ff15==999999999999.99) printf("ff15與999999999999.999相等。\n");

  double ff16=9999999999999.99;   // 測試16位的浮點數
  printf("ff16=%lf\n",ff16);
  if (ff16==9999999999999.99) printf("ff16與9999999999999.999相等。\n");

  double ff17=99999999999999.99;   // 測試17位的浮點數
  printf("ff17=%lf\n",ff17);
  if (ff17==99999999999999.99) printf("ff17與99999999999999.999相等。\n");

  double ff18=999999999999999.99;   // 測試18位的浮點數
  printf("ff18=%lf\n",ff18);
  if (ff18==999999999999999.99) printf("ff18與99999999999999.999相等。\n");
}

運行效果
在這裏插入圖片描述

從程序的運行我們可以看出double數的兩個特徵:

1)double數據類型表達的也是一個近似的數,不是準確的,小數點後的n位有誤差,浮點數的位數越大,誤差越大,到18位的時候,誤差了1,基本上不能用了。

2)用“==”可以比較兩個double數值是否相等。

3、應用經驗

float浮點型的精度最多隻有8位,並且不能用==判斷兩個浮點數是否相等,在實際開發中,棄用float,只使用double型就可以了。

4、版權聲明

C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。

來源:C語言技術網(www.freecplus.net

作者:碼農有道

如果這篇文章對您有幫助,請點贊支持,或在您的博客中轉發此文,讓更多的人可以看到它,謝謝!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章