home | help
std::setprecision(3)	       C++ Standard Libary	    std::setprecision(3)

NAME
     std::setprecision - std::setprecision

Synopsis
	Defined in header <iomanip>
	/*unspecified*/ setprecision( int n );

	When  used  in	an  expression out << setprecision(n) or in >> setpreci-
     sion(n), sets the
	precision parameter of the stream out or in to exactly n.

Parameters
	n - new value for precision

Return value
	An object of unspecified type such that

	  * if out is an object of type std::basic_ostream<CharT,  Traits>,  the
     expression
	    out << setprecision(n)
	       * has type std::basic_ostream<CharT, Traits>&
	       * has value out
	       * behaves as if it called f(out, n)
	  *  if  in  is an object of type std::basic_istream<CharT, Traits>, the
     expression in
	    >> setprecision(n)
	       * has type std::basic_istream<CharT, Traits>&
	       * has value in
	       * behaves as if it called f(in, n)

	where the function f is defined as:

      void f(std::ios_base& str, int n)
      {
	  // set precision
	  str.precision(n);
      }

Example
     // Run this code

      #include <iomanip>
      #include <iostream>
      #include <limits>
      #include <numbers>

      int main()
      {
	  constexpr long double pi{std::numbers::pi_v<long double>};

	  const auto default_precision{std::cout.precision()};
	  constexpr  auto  max_precision{std::numeric_limits<long  double>::dig-
     its10 + 1};

	  std::cout << "default precision: " << default_precision << '\n'
		    << "maximum precision: " << max_precision << "\n\n"
		       "precision: pi:\n";

	  for (int p{0}; p <= max_precision; ++p)
	      std::cout  << std::setw(2) << p << "  " << std::setprecision(p) <<
     pi << '\n';

	  std::cout << std::setprecision(default_precision); // restore defaults
      }

Output:
      default precision: 6
      maximum precision: 19

      precision: pi:
       0  3
       1  3
       2  3.1
       3  3.14
       4  3.142
       5  3.1416
       6  3.14159
       7  3.141593
       8  3.1415927
       9  3.14159265
      10  3.141592654
      11  3.1415926536
      12  3.14159265359
      13  3.14159265359
      14  3.1415926535898
      15  3.14159265358979
      16  3.141592653589793
      17  3.1415926535897932
      18  3.14159265358979324
      19  3.141592653589793239

	Defect reports

	The following behavior-changing defect	reports  were  applied	retroac-
     tively to
	previously published C++ standards.

	  DR	 Applied to	       Behavior as published		 Correct
     behavior
	LWG 183 C++98	   setprecision could only be used with  streams  usable
     with any
			   of  type std::ostream or std::istream	 charac-
     ter stream

See also
	fixed
	scientific
	hexfloat     changes formatting used for floating-point I/O
	defaultfloat (function)
	(C++11)
	(C++11)
	precision    manages decimal precision of floating point operations
		     (public member function of std::ios_base)

http://cppreference.com 	   2024.06.10		    std::setprecision(3)

home | help