1. 四捨五入的基礎:為什麼需要?
在程式設計中,正確控制數值的精度非常重要。特別是當計算結果包含小數時,透過四捨五入可以讓數值更清晰、結果更易於整理。例如在金額計算或測量數據彙總時,四捨五入在各種場合都會用到。
四捨五入的實際例子
例如,把 2.5 四捨五入會得到 3,把 2.3 則得到 2。這些操作不僅在日常生活中常見,在程式設計中也經常使用,有助於簡化計算結果。
2. 在 C 語言中如何四捨五入
在 C 語言中,進行四捨五入通常會用到 math.h
函式庫中的 round()
函式。這個函式可以把傳入的實數四捨五入到最接近的整數。
round() 函式的基本用法
以下是使用 round()
的基本範例:
#include <stdio.h>
#include <math.h>
int main() {
double x = 2.5;
printf("四捨五入結果:%f\n", round(x));
return 0;
}
執行這段程式後,輸出會是「四捨五入結果:3.000000」。這就是 2.5
經過 round()
四捨五入得到 3
的結果。請別忘了包含 math.h
標頭檔。
3. 指定小數位數的四捨五入
在 C 語言中,如果要四捨五入到指定的小數位數,還需要多一個步驟。最常見的方法是先將數值乘以 10 的 n 次方,四捨五入後再除回來,這樣就能控制到你想要的小數位。
指定小數位數的程式範例
#include <stdio.h>
#include <math.h>
int main() {
double num = 123.456;
num = num * 100; // 變成兩位小數
double result = round(num) / 100; // 四捨五入再除回來
printf("%.2f\n", result); // 結果是 123.46
return 0;
}
這個例子中,num
先乘以 100,把小數點右移兩位,然後用 round()
四捨五入,再除以 100,最後得到 123.456
四捨五入後的 123.46
。
4. 不用函式手動四捨五入
在 C 語言中,也可以不用 round()
函式,自己手動進行四捨五入。只要把數值加上 0.5,再強制轉型為 int
,就能得到最接近的整數。
手動四捨五入的方法
#include <stdio.h>
int main() {
double num = 2.3;
int rounded = (int)(num + 0.5);
printf("四捨五入結果:%d\n", rounded);
return 0;
}
這裡,2.3
加 0.5
得到 2.8
,強制轉型成 int
變成 2
。這種方法在無法使用 round()
的情況下很有用。

5. 負數的四捨五入
不只正數可以四捨五入,負數也可以,但結果可能跟你想像的不同。例如,-2.5
四捨五入會變成 -3
,而不是 -2
。C 語言的 round()
會依這個規則處理負數。
負數四捨五入範例
#include <stdio.h>
#include <math.h>
int main() {
double num = -2.5;
printf("四捨五入結果:%f\n", round(num));
return 0;
}
執行這段程式,-2.5
四捨五入會得到 -3.0
。處理負數時,請特別注意結果,避免產生誤解。
6. C 語言中的其他四捨五入方式
除了普通四捨五入外,還有無條件捨去(floor)和無條件進位(ceil)等方法。在 C 語言中,可以使用 math.h
內的 floor()
和 ceil()
來實現這些功能。
無條件捨去與進位的範例
#include <stdio.h>
#include <math.h>
int main() {
double num = 2.7;
printf("無條件捨去:%f\n", floor(num)); // 結果為 2.0
printf("無條件進位:%f\n", ceil(num)); // 結果為 3.0
return 0;
}
在這個例子裡,floor()
會把 2.7
無條件捨去成 2.0
,ceil()
則會進位成 3.0
。依照需求選擇合適的函式即可。
7. 小結
使用 C 語言的 math.h
內的 round()
就能簡單完成四捨五入。如果要處理小數位數或負數,需要多一點步驟,但整體來說還是很彈性。另外搭配 floor()
(無條件捨去)或 ceil()
(無條件進位)可以滿足不同的數值處理需求。