簡體   English   中英

在 C++ 中使用 cout 打印浮點和雙精度值

[英]Printing float and double values using cout in C++

對於以下代碼:

#include <iostream>
using namespace std;
class Hall
{
 public:
 double cost;
};
int main()
{
 Hall hall;
 hall.cost=10000.50;
 cout<<hall.cost;
 return 0;
}

為什么這個代碼 output 是 10000.5 而不是 10000.50,有人能解釋一下這背后的邏輯嗎?

有人可以解釋這背后的邏輯嗎?

默認行為是不顯示任何尾隨零。

double (和一般的浮點變量)不存儲數字的特定拼寫(base-10 或其他)。 那效率太低了,存儲無意義的零的能力會浪費 memory。

相反,數字以某種二進制格式編碼。 打印它們會從二進制復制 base-10 拼寫。

默認情況下,C++ 不顯示尾隨零,但是標准庫<iomanip>可以與來自<iostream>的 std::fixed 一起使用。 這是一個例子:

#include <iostream>
#include <iomanip>
int main() {
  double myVar = 123.4;
  std::cout << std::fixed << std::setprecision(2); // 2 trailing digits
  std::cout << myVar << std::endl;
  return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM