C++ IOS 庫 - 精度



描述

浮點精度決定了在插入操作中寫入浮點值的最多位數。如何解釋它取決於 floatfield 格式標誌是否設定為特定表示法(固定或科學)或未設定(使用預設表示法,它不一定等效於固定或科學)。

對於預設語言環境 -

  • 使用預設浮點表示法,精度欄位指定要顯示的總共最大有效位數,包括小數點前和小數點後的位數。請注意,它不是最小值,因此如果該數字可以用小於精度的位數顯示,則它不會用尾隨零填充顯示的數字。
  • 在固定和科學表示法中,精度欄位準確指定小數點後顯示多少位數字,即使這包括尾隨小數零。在這種情況下,小數點前的數字與精度無關。

宣告

以下是 ios_base::precision 函式的宣告。

get (1)	streamsize precision() const;
set (2)	streamsize precision (streamsize prec);

第一種形式 (1) 返回流當前浮點精度欄位的值。

第二種形式 (2) 還將其設定為新值。

引數

prec - 浮點精度的新的值。

返回值

呼叫前流中選擇的精度。

異常

基本保證 - 如果丟擲異常,則流處於有效狀態。

資料競爭

訪問 (1) 或修改 (2) 流物件。對同一流物件的併發訪問可能會導致資料競爭。

示例

以下示例說明了 ios_base::precision 函式。

#include <iostream>     

int main () {
   double f = 3.14159;
   std::cout.unsetf ( std::ios::floatfield );                
   std::cout.precision(5);
   std::cout << f << '\n';
   std::cout.precision(10);
   std::cout << f << '\n';
   std::cout.setf( std::ios::fixed, std:: ios::floatfield ); 
   std::cout << f << '\n';
   return 0;
}

讓我們編譯並執行上述程式,這將產生以下結果 -

3.1416
3.14159
3.141590000
ios.htm
廣告

© . All rights reserved.