在任何語言中編寫程式時,將數字表示為輸出是一項有趣且重要的任務。對於整數類型(short、long或medium類型的資料),很容易將數字表示為輸出。對於浮點數(float或double類型),有時我們需要將其四捨五入到特定的小數位數。例如,如果我們想將52.24568表示為三位小數,需要進行一些預處理。在本文中,我們將介紹幾種技術,透過四捨五入將浮點數表示為特定的小數位數。
在不同的方法中,使用類似C的格式化字串、使用精度參數以及使用數學函式庫中的round()函數是很重要的。讓我們逐一來看。帶有正確語法和程式碼範例。
在C語言中,我們使用printf()函數來表示帶有格式的列印。要使用printf()函數顯示一些數據,需要事先指定格式化字串。相同的printf()函數也適用於C 。要以特定的小數位數表示數字,格式化語法將如下所示
printf 語句的語法。
printf ( “%.<number of decimal place>f”, <floating point number> );
例如,如果我們想要顯示一個浮點數變數NUM,保留4位小數,語句將會是這樣的 -
printf ( “%.4f”, NUM );
#include <iostream> using namespace std; void solve( float number) { printf ( "%.3f", number ); } int main(){ cout << "Number 45.278586 up to 3 decimal places: "; solve( 45.278586 ); }
Number 45.278586 up to 3 decimal places: 45.279
在這個例子中,我們可以看到給定的數字有6位小數。但是我們只顯示到3位小數。並且在四捨五入時會自動轉換為最接近的值。然而,這個過程有一個缺點。我們不能在任意時刻動態地改變小數位的值。為了克服這個問題,我們可以使用基於C 的setprecision()方法來採用另一種方法。
C 有一個特殊的格式化函數,名為setprecision(),用於設定精度值,最多保留n位小數。要使用這個方法,我們需要匯入iomanip函式庫。還需要指定我們使用固定的小數位數。語法如下圖所示:
定義set precision()方法
include <iomanip> std::cout << std::fixed; std::cout << std::setprecision( <number of decimal places> ); std::cout << The_floating_point_number;
例如,如果我們想要顯示一個浮點數變數NUM,保留4位小數,語句將會是這樣的 -
include <iomanip> std::cout << std::fixed; std::cout << std::setprecision( 4 ); std::cout << NUM;
#include <iostream> #include <iomanip> using namespace std; void solve( float number, int place) { cout << fixed; cout << setprecision( place ); cout << number << endl; } int main(){ cout << "Number 45.278586 up to 3 decimal places: "; solve( 45.278586, 3); cout << "Number 45.278586 up to 4 decimal places: "; solve( 45.278586, 4); cout << "Number 45.278586 up to 5 decimal places: "; solve( 45.278586, 5); }
Number 45.278586 up to 3 decimal places: 45.279 Number 45.278586 up to 4 decimal places: 45.2786 Number 45.278586 up to 5 decimal places: 45.27859
這是一種理想的表示小數點後n位數的方法。有時候當n = 0時,我們可以用另一種方法來四捨五入。這將把數字轉換為整數。具體方法如下所示 −
“cmath”函式庫有一個 round() 方法將數字轉換為其最接近的整數。所以這是將浮點數轉換為小數點後 0 位。語法如下。
使用 round() 方法
include <cmath> float res = round ( <floating point number> );
例如,如果我們想要將數字45.254四捨五入到最近的整數,語句將如下所示。
include <cmath> float res = round ( 45.254 ); std::cout << res;
#include <iostream> #include <cmath> using namespace std; void solve( float number) { float res; res = round ( number ); cout << res << endl; } int main(){ cout << "Number 45.278586 to its nearest integer: "; solve( 45.278586 ); cout << "Number 89.7854 to its nearest integer: "; solve( 89.7854 ); cout << "Number -45.69 to its nearest integer: "; solve( -45.69 ); }
Number 45.278586 to its nearest integer: 45 Number 89.7854 to its nearest integer: 90 Number -45.69 to its nearest integer: -46
在這個例子中,很明顯地將浮點數轉換為最接近的整數,合適且簡單的方法是使用round()函數。此函數以數字作為參數,並傳回整數等價物。在我們的例子中,有一個負數-45.69,在將其四捨五入後,變成了-46,這個數比原來小。所以round()方法不像floor()或ceil()。
當我們用 C 寫程式碼時,表示最多 n 位元小數的浮點數的方法很少。最基本的方法是使用 printf() 方法和格式化字串。但是,對於此方法,無法動態變更格式字串小數位。為了處理這個問題,C iomanip 函式庫有 set precision() 方法,該方法取得浮點數四捨五入的小數位數。有時我們需要將浮點數舍入為最接近的整數(小數點後 0 位),在這種情況下,我們可以使用 C 中 cmath 庫中的 round() 方法。
以上是C++程式將一個數字四捨五入到n位小數的詳細內容。更多資訊請關注PHP中文網其他相關文章!