首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言浮點類型float與double:表示形式、輸出與精度陷阱

     編輯:C 語言基礎

小數兩種表示形式

  • 十進制形式:如 0.0、75.0、4.023、-937.198。
  • 指數形式:C 中寫作 aEn 或 aen,值為 a × 10ⁿ。
    例:2.1E5 = 2.1×10⁵、3.7E-2 = 3.7×10⁻²、0.5E7 = 0.5×10⁷。

float vs double

類型名稱佔用字節精度
float單精度浮點數4 字節約 6~7 位有效數字
double雙精度浮點數8 字節約 15~16 位有效數字

長度固定,不像整數有 short/int/long 之分。

輸出控制符

  • %f:輸出 float(實際提升為 double 傳遞)。
  • %lf:輸出 double。

代碼示例

#include <stdio.h>
#include <stdlib.h>
int main() {
    float a = 0.302f;
    float b = 1.23002398;
    double c = 123;
    double d = 78.429;
    float e = 128.101;
    printf("a=%f \nb=%f \nc=%f \nd=%lf \ne=%lf\n", a, b, c, d, e);
    return 0;
}

輸出:
a=0.302000
b=1.230024
c=123.000000
d=78.429000
e=128.100998

關鍵觀察

  1. %f 默認保留 6 位小數,不足補 0,超出四捨五入。
  2. 整數賦值給 float 自動轉小數(c=123 → 123.000000)。
  3. e 的輸出 128.100998 而非 128.101 —— 浮點數存儲為二進制近似值,非精確十進制。詳細原理見《C語言 float、double 的內存表示》。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved