Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::fixed,std::scientific,std::hexfloat,std::defaultfloat

      From cppreference.com
      <cpp‎ |io‎ |manip
       
       
       
      Input/output manipulators
      Floating-point formatting
      fixedscientifichexfloatdefaultfloat
      (C++11)(C++11)
      Integer formatting
      Boolean formatting
      Field width and fill control
      Other formatting
      Whitespace processing
      Output flushing
      Status flags manipulation
      Time and money I/O
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      Quoted manipulator
      (C++14)
       
      Defined in header<ios>
      (1)
      std::ios_base& scientific(std::ios_base& str);
      (2)
      std::ios_base& hexfloat(std::ios_base& str);
      (3)(since C++11)
      std::ios_base& defaultfloat(std::ios_base& str);
      (4)(since C++11)

      Modifies the default formatting for floating-point output.

      1) Sets thefloatfield of the streamstr tofixed as if by callingstr.setf(std::ios_base::fixed,std::ios_base::floatfield).
      2) Sets thefloatfield of the streamstr toscientific as if by callingstr.setf(std::ios_base::scientific,std::ios_base::floatfield).
      3) Sets thefloatfield of the streamstr tofixed andscientific simultaneously as if by callingstr.setf(std::ios_base::fixed|std::ios_base::scientific,std::ios_base::floatfield). This enables hexadecimal floating-point formatting.
      4) Sets thefloatfield of the streamstr to zero, as if by callingstr.unsetf(std::ios_base::floatfield). This enables the default floating-point formatting, which is different from fixed and scientific.

      This is an I/O manipulator, it may be called with an expression such asout<< std::fixed for anyout of typestd::basic_ostream (or with an expression such asin>> std::scientific for anyin of typestd::basic_istream).

      Contents

      [edit]Parameters

      str - reference to I/O stream

      [edit]Return value

      str (reference to the stream after manipulation).

      [edit]Notes

      Hexadecimal floating-point formatting ignores the stream precision specification, as required by the specification ofstd::num_put::do_put.

      These manipulators do not affect floating-point parsing.

      [edit]Example

      Run this code
      #include <iomanip>#include <iostream>#include <sstream> enumclass cap{ title, middle, end}; void print(constchar* text,double num, cap c){if(c== cap::title)std::cout<<"┌──────────┬────────────┬──────────────────────────┐\n""│  number  │   iomanip  │      representation      │\n""├──────────┼────────────┼──────────────────────────┤\n";std::cout<<std::left<<"│ "<<std::setw(8)<< text<<" │ fixed      │ "<<std::setw(24)<< std::fixed<< num<<" │\n"<<"│ "<<std::setw(8)<< text<<" │ scientific │ "<<std::setw(24)<< std::scientific<< num<<" │\n"<<"│ "<<std::setw(8)<< text<<" │ hexfloat   │ "<<std::setw(24)<< std::hexfloat<< num<<" │\n"<<"│ "<<std::setw(8)<< text<<" │ default    │ "<<std::setw(24)<< std::defaultfloat<< num<<" │\n";std::cout<<(c!= cap::end?"├──────────┼────────────┼──────────────────────────┤\n":"└──────────┴────────────┴──────────────────────────┘\n");} int main(){    print("0.0",0.0, cap::title);    print("0.01",0.01, cap::middle);    print("0.00001",0.00001, cap::end); // Note; choose clang for correct outputdouble f;std::istringstream("0x1.8p+0")>> f;std::cout<<"Parsing 0x1.8p+0 gives "<< f<<'\n'; std::istringstream("0x1P-1022")>> f;std::cout<<"Parsing 0x1P-1022 gives "<< f<<'\n';}

      Output:

      ┌──────────┬────────────┬──────────────────────────┐│  number  │   iomanip  │      representation      │├──────────┼────────────┼──────────────────────────┤│ 0.0      │ fixed      │ 0.000000                 ││ 0.0      │ scientific │ 0.000000e+00             ││ 0.0      │ hexfloat   │ 0x0p+0                   ││ 0.0      │ default    │ 0                        │├──────────┼────────────┼──────────────────────────┤│ 0.01     │ fixed      │ 0.010000                 ││ 0.01     │ scientific │ 1.000000e-02             ││ 0.01     │ hexfloat   │ 0x1.47ae147ae147bp-7     ││ 0.01     │ default    │ 0.01                     │├──────────┼────────────┼──────────────────────────┤│ 0.00001  │ fixed      │ 0.000010                 ││ 0.00001  │ scientific │ 1.000000e-05             ││ 0.00001  │ hexfloat   │ 0x1.4f8b588e368f1p-17    ││ 0.00001  │ default    │ 1e-05                    │└──────────┴────────────┴──────────────────────────┘Parsing 0x1.8p+0 gives 1.5Parsing 0x1P-1022 gives 2.22507e-308

      [edit]See also

      changes floating-point precision
      (function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/manip/fixed&oldid=159201"

      [8]ページ先頭

      ©2009-2025 Movatter.jp