如何使用 cout 以全精度打印双精度值?

新手上路,请多包涵

在我 之前的问题 中,我正在使用 cout 打印 double ,当我没有预料到它时,它得到了四舍五入。如何使用全精度制作 cout 打印 double

原文由 Jason Punyon 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

您可以直接在 std::cout 上设置精度并使用 std::fixed 格式说明符。

 double d = 3.14159265358979;
cout.precision(17);
cout << "Pi: " << fixed << d << endl;

您可以 #include <limits> 获得浮点或双精度的最大精度。

 #include <limits>

typedef std::numeric_limits< double > dbl;

double d = 3.14159265358979;
cout.precision(dbl::max_digits10);
cout << "Pi: " << d << endl;

原文由 Bill the Lizard 发布,翻译遵循 CC BY-SA 4.0 许可协议

最好的选择是使用 std::setprecision ,解决方案是这样的:

 # include <iostream>
# include <iomanip>

int main()
{
    double a = 34.34322;
    std::cout<<std::fixed<<a<<std::setprecision(0)<<std::endl;
    return 0;
}

注意:您不需要使用 cout.setprecision 来执行此操作,我在 std::setprecision 处填写 0,因为它必须有一个参数。

原文由 CPP_is_no_STANDARD 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题