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()(無條件進位)可以滿足不同的數值處理需求。



