簡體   English   中英

在 C++ 中將 int 轉換為 double

[英]Converting int to double in C++

我無法從intdouble進行簡單的轉換才能工作

#include <iostream>

int main()
{
  int i = 8;
  double d1 = i;
  double d2 = static_cast<double>(i);
  std::cout << "i = " << i << ", d1 = " << d1 << ", d2 = " << d2 << std::endl;
  return 0;
}

d1d2等於8 ,而不是8.0 ,不僅在stdout ,而且在 QtCreator 的調試器中。

AFAIK, d1d2應該是8.0 ,不是嗎?

誰能告訴我我做錯了什么?

我正在設置 g++ 編譯器,版本 7.4.0,符合 C++11。

謝謝!

我無法從 int 到 double 進行簡單的轉換才能工作

實際上,轉換本身工作得很好。

d1 和 d2 等於 8,而不是 8.0

8 和 8.0 是將相同值表示為字符串的兩種方式。 值沒有區別。

AFAIK,d1 和 d2 應該是 8.0,不是嗎?

它們是,因為 8 和 8.0 是相同的精確值。

誰能告訴我我做錯了什么?

您的錯誤是期望輸出為 8.0。 由於輸出流的默認格式設置,正確的輸出是 8。

另一個錯誤是假設從 int 到 double 的轉換有問題,而實際上問題出在文本輸出的格式上。

如果您的意圖是輸出 8.0,那么您的錯誤就是沒有使用正確的流操作器來實現該格式。 特別是,您需要使用std::fixed操縱器來顯示固定的小數位數,即使它們為零。 您可以使用std::setprecision設置要顯示的小數位數。 根據您希望在不同情況下格式化輸出的方式, std::showpoint也可能是一個選項。

毫無疑問, d1d2double s。 您也需要在標題<iomanip>找到std::setprecision() (顯然還有std::fixed ):

#include <iostream>
#include <iomanip>

int main()
{
  int i = 8;
  double d1 = i;
  double d2 = static_cast<double>(i);
  std::cout << "i = " << i << std::fixed << std::setprecision(2) << ", d1 = " << d1 << ", d2 = " << d2 << std::endl;
  return 0;
}

暫無
暫無

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

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