函式
<ios> <iostream>

std::fixed

ios_base& fixed (ios_base& str);
使用定點表示法
str 流的 floatfield 格式標誌設定為 fixed

floatfield 設定為 fixed 時,浮點值將使用定點表示法寫入:值表示為十進位制部分具有由精度欄位precision)指定的位數,並且沒有指數部分。

floatfield 格式標誌是選擇性標誌和切換標誌:它可以具有以下一個、多個或零個值

標誌值設定時的效果
fixed以定點表示法寫入浮點值
scientific以科學表示法寫入浮點值。
(無)以預設浮點表示法寫入浮點值。
預設表示法(無)fixedscientific 是不同的 floatfield 值。可以透過呼叫 str.unsetf(ios_base::floatfield) 來選擇預設表示法。

對於標準流,在初始化時沒有設定 floatfield(預設表示法)。
floatfield”格式標誌既是選擇性標誌,也是切換標誌:它可以接受以下任何值,或者不接受任何值

標誌值設定時的效果
fixed以定點表示法寫入浮點值。
scientific以科學表示法寫入浮點值。
hexfloat以十六進位制格式寫入浮點值。
此值與 (fixed|scientific) 相同
defaultfloat以預設浮點表示法寫入浮點值。這是預設值(與無值相同,在設定任何其他 floatfield 位之前)。

對於標準流,初始化時 floatfield 格式標誌被設定為 defaultfloat

精度欄位可以透過成員 precision 進行修改。

請注意,精度欄位在預設浮點表示法以及 fixed 和 scientific 表示法之間的處理方式不同(請參閱 precision)。在預設浮點表示法中,精度欄位指定小數點前後有意義的數字的最大位數,而在 fixed 和 scientific 表示法中,精度欄位精確指定小數點後要顯示的位數,即使它們是尾隨零。

引數

str
受影響的 floatfield 格式標誌的流物件。
因為此函式是一個操縱符,它被設計為在不帶引數的情況下,與流上的插入 (<<) 和提取 (>>) 操作結合使用(見下例)。

返回值

引數 str

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// modify floatfield
#include <iostream>     // std::cout, std::fixed, std::scientific

int main () {
  double a = 3.1415926534;
  double b = 2006.0;
  double c = 1.0e-10;

  std::cout.precision(5);

  std::cout << "default:\n";
  std::cout << a << '\n' << b << '\n' << c << '\n';

  std::cout << '\n';

  std::cout << "fixed:\n" << std::fixed;
  std::cout << a << '\n' << b << '\n' << c << '\n';

  std::cout << '\n';

  std::cout << "scientific:\n" << std::scientific;
  std::cout << a << '\n' << b << '\n' << c << '\n';
  return 0;
}

可能的輸出
default:
3.1416
2006
1e-010

fixed:
3.14159
2006.00000
0.00000

scientific:
3.14159e+000
2.00600e+003
1.00000e-010


資料競爭

修改 str。對同一個流物件的併發訪問可能導致資料競爭。

異常安全

基本保證:如果丟擲異常,str 處於有效狀態。

另見