![]() |
C 教材:浮點數型態的變數 |
現在,我們再介紹一個 C 的保留字:double。 它用來宣告雙精度浮點數 (簡稱「浮點數」) 的變數。 我們用它來計算華氏 70 度的攝氏度數。 所得的輸出應該是
70 21.1
#include <stdio.h> /* 將華氏 70 度轉換成攝氏度數 (fahr-float.c) */ main() { double fahr, cels; fahr = 70; cels = 5*(fahr-32)/9; printf("%3.0f\t%.1f\n", fahr, cels); }
如果 C 看到一個四則運算符號的兩邊有一個是小數、或浮點數資料型態的變數, 則它以浮點數的方法做計算。所得的結果,也是浮點數。在
cels = 5*(fahr-32)/9;這個指令裡,C 先計算 fahr-32。因為 fahr 是浮點數變數, 所以 fahr-32 的結果是浮點數 38.0; 然後計算 5*38.0 得到 190.0; 然後計算 190.0/9 得到 21.11111111111111 (在數學上,應該是 21.1 循環,但是浮點數的精確程度,只能得到十六個十進制的有效數字)。 最後,再將 cels 的值定義為 21.11111111111111。
我們再介紹一種 printf() 的輸出格式。
上面說的 7 可以改成任何正的常數整數。實驗
%f 以雙精度浮點數解讀變數的值, 小數點下固定給 6 位。 最後一位如果必要的話,會四捨五入。整數部分以恰好的位數輸出 %7f 同上,但至少用 7 個字元輸出 (含負號與小數點), 若變數的值用不到 7 個字元,靠右邊排齊,左邊留空白 %-7f 同上, 但若變數的值不到 7 位,靠左邊排齊,右邊留空白 %.2f 以浮點數解讀變數的值, 小數點下固定給 2 位。 整數部分以恰好的位數輸出。最後一位如果必要的話,會四捨五入 %.0f 同上,但小數點下固定給 0 位, 也不輸出小數點,也就是四捨五入到整數位 %7.2f 同 %.2f, 但至少用 7 個字元輸出, 若變數的值用不到 7 個字元,靠右邊排齊,左邊留空白。 %-7.2f 同 %-7f 中的 - 號意義
得到double x; x = 2.71828; printf("|%f\n|%6f\n|%10f\n|%10.2f\n|%.0f\n",x,x,x,x,x);
|2.718280 |2.718280 | 2.718280 | 2.72 |3
習題
cels = (5/9)*(fahr-32);結果如何?
![]() |
![]() |
單維彰 (2000/03/24) --- 03/04/26 (單) |