首頁  >  文章  >  後端開發  >  為什麼 `std::cout. precision()` 不如預期顯示尾隨零?

為什麼 `std::cout. precision()` 不如預期顯示尾隨零?

Susan Sarandon
Susan Sarandon原創
2024-11-11 08:26:02239瀏覽

Why Doesn't `std::cout.precision()` Display Trailing Zeros as Expected?

正確使用std::cout. precision() 進行尾隨零顯示

使用std::cout. precision( 指定的精確度)確定格式化浮點數時要包含的小數位數。但是,在某些情況下,尾隨零可能不會如預期顯示。

考慮以下程式碼片段:

#include <iostream>
#include <stdlib.h>

int main() {
  int a = 5;
  int b = 10;
  std::cout.precision(4);
  std::cout << (float)a / (float)b << "\n";
  return 0;
}

此程式碼嘗試將兩個整數相除的結果輸出為浮點數- 精確度為小數點後四位的點數。但是,輸出顯示“0.5”而不是預期的“0.5000”。發生這種情況是因為在執行除法時整數資料類型隱式轉換為浮點,但精確度尚未專門應用於整數到浮點的轉換。

要正確顯示尾隨零,需要附加一個操縱器std::fixed 必須與std::cout:

#include <iostream>
#include <stdlib.h>
#include <iomanip>

int main() {
  int a = 5;
  int b = 10;
  std::cout << std::fixed;
  std::cout << std::setprecision(4);
  std::cout << (float)a / (float)b << "\n";
  return 0;
}

std::fixed 操縱器指示std::cout 一起使用以定點表示法輸出浮點數,其中包括尾隨零。 std::set precision(4) 操縱器指定輸出應具有四位小數的精度。

透過合併 std::fixed 操縱器,程式碼片段的輸出現在可以正確顯示尾隨零,從而產生正如預期的「0.5000」。

以上是為什麼 `std::cout. precision()` 不如預期顯示尾隨零?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn