首頁  >  文章  >  後端開發  >  C++程式將一個數字四捨五入到n位小數

C++程式將一個數字四捨五入到n位小數

PHPz
PHPz轉載
2023-09-12 17:13:021745瀏覽

C++程式將一個數字四捨五入到n位小數

在任何語言中編寫程式時,將數字表示為輸出是一項有趣且重要的任務。對於整數類型(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 );

Example

的中文翻譯為:

範例

#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()方法來採用另一種方​​法。

使用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;

Example

的中文翻譯為:

範例

#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時,我們可以用另一種方​​法來四捨五入。這將把數字轉換為整數。具體方法如下所示 −

使用round()方法

“cmath”函式庫有一個 round() 方法將數字轉換為其最接近的整數。所以這是將浮點數轉換為小數點後 0 位。語法如下。

文法

使用 round() 方法

include <cmath>
float res = round ( <floating point number> );

例如,如果我們想要將數字45.254四捨五入到最近的整數,語句將如下所示。

include <cmath>
float res = round ( 45.254 );
std::cout << res;

Example

的中文翻譯為:

範例

#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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除