函式
<ios> <iostream>

std::scientific

ios_base& scientific (ios_base& str);
使用科學計數法表示浮點數
str 流的 floatfield 格式標誌設定為 scientific

floatfield 設定為 scientific 時,浮點數值將以科學計數法書寫:該值始終表示為小數點前只有一個數字,然後是小數點和與精度欄位precision)一樣多的小數位數。最後,這種表示法始終包含一個指數部分,由字母e後跟一個可選的符號和三個指數數字組成。

floatfield 格式標誌是一個選擇性標誌,也是一個切換標誌:它可以接受一個或多個以下值

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

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

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

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

可以使用成員precision修改精度欄位

請注意,精度欄位在預設浮點表示法與定點和科學計數法之間的處理方式不同(參見precision)。在預設浮點表示法中,精度欄位指定了小數點前後要顯示的有效數字的最大數量,而在定點和科學計數法中,精度欄位精確指定了小數點後要顯示的數字數量,即使它們是尾隨的零。

引數

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 處於有效狀態。

另見