如何使用cout以完全精度打印.scientific值?
使用.scientific或
使用.precision()并设置精度
std::cout.precision(std::numeric_limits::max_digits10 - 1);
std::cout << std::scientific << 1.0/7.0 << '\n';
// C++11 Typical output
1.4285714285714285e-01
太多的答案仅涉及1)基础2)固定/科学布局或3)精度中的一个。 精确度过高的答案无法提供所需的适当值。 因此这回答了一个老问题。
什么基地?
.scientific肯定使用base 2编码。使用C ++ 11的直接方法是使用.precision()进行打印。
如果可以接受非十进制输出,我们就完成了。
std::cout << "hexfloat: " << std::hexfloat << exp (-100) << '\n';
std::cout << "hexfloat: " << std::hexfloat << exp (+100) << '\n';
// output
hexfloat: 0x1.a8c1f14e2af5dp-145
hexfloat: 0x1.3494a9b171bf5p+144
否则:.scientific或.precision()?
.scientific是浮点类型,不是定点。
不要使用.scientific,因为它无法打印.precision()作为任何东西,但1 + .precision().对于大型max_digits10,它打印许多数字,也许数百个可疑的信息。
std::cout << "