C++ 字符串为双精度或浮点值将截断小数点

C++ 字符串为双精度或浮点值将截断小数点,c++,C++,我不知道我做错了什么,但我想使用std::stod将字符串转换为double,但它会减少小数点 int main() { auto value = std::string("321415.1342"); auto val = std::stod(value, 0); std::cout << val << '\n'; } 你需要改变精度。这就是你要找的。您必须包括iomanip: #include <iostream> #include <

我不知道我做错了什么,但我想使用std::stod将字符串转换为double,但它会减少小数点

int main()
{
  auto value = std::string("321415.1342");
  auto val = std::stod(value, 0);
  std::cout << val << '\n';
}

你需要改变精度。这就是你要找的。您必须包括
iomanip

#include <iostream>
#include <string> 
#include <iomanip>  // <- include this

int main()
{
  auto value = std::string("321415.1342");
  auto val = std::stod(value, 0);
  std::cout << std::setprecision(5) << std::fixed << val << std::endl;

  return 0;
}

有关此主题的更多信息,请参阅答案。

您需要更改精度。这就是你要找的。您必须包括
iomanip

#include <iostream>
#include <string> 
#include <iomanip>  // <- include this

int main()
{
  auto value = std::string("321415.1342");
  auto val = std::stod(value, 0);
  std::cout << std::setprecision(5) << std::fixed << val << std::endl;

  return 0;
}

有关此主题的更多信息,请参见答案。

更改精度,尝试查看小数点后是否有内容`std::cout是的,先生,有。double的默认输出不应该产生几个小数点吗?这是非常令人惊讶的默认行为。默认精度是输出6位数字,而不是科学格式:精度修正有效,但我想知道为什么需要它。我尝试将val设置为双精度而不是自动,但没有任何效果。不会改变,默认精度为6位。与它所在的位置无关。请更改精度以查看小数点'std::cout'后是否有内容是的,先生,有。double的默认输出不应该产生几个小数点吗?这是非常令人惊讶的默认行为。默认精度是输出6位数字,而不是科学格式:精度修正有效,但我想知道为什么需要它。我尝试将val设置为双精度而不是自动,但没有任何效果。不会改变,默认精度为6位。和它的位置无关。
321415.13420