cplusplus.com cplusplus.com
cplusplus.com   C++ : Reference : IOstream Library : manipulators : scientific
- -
C++
Information
Documentation
Reference
Articles
Sourcecode
Forum
Reference
C Library
IOstream Library
Strings library
STL Containers
STL Algorithms
IOstream Library
manipulators
classes:
· filebuf
· fstream
· ifstream
· ios
· iostream
· ios_base
· istream
· istringstream
· ofstream
· ostream
· ostringstream
· streambuf
· stringbuf
· stringstream
objects:
· cerr
· cin
· clog
· cout
types:
· fpos
· streamoff
· streampos
· streamsize
manipulators
· boolalpha
· dec
· endl
· ends
· fixed
· flush
· hex
· internal
· left
· noboolalpha
· noshowbase
· noshowpoint
· noshowpos
· noskipws
· nounitbuf
· nouppercase
· oct
· resetiosflags
· right
· scientific
· setbase
· setfill
· setiosflags
· setprecision
· setw
· showbase
· showpoint
· showpos
· skipws
· unitbuf
· uppercase
· ws

-

scientific manipulator function
ios_base& scientific ( ios_base& str );
<ios>

Use scientific notation

Sets the floatfield format flag for the str stream to scientific.

When floatfield is set to scientific, float values are written using scientific notation, which means the value is represented always with only one digit before the decimal point, followed by the decimal point and as many decimal digits as the precision field specifies. Finally, this notation always includes an exponential part consisting on the letter e followed by an optional sign and three digits.

The floatfield format flag is both a selective and a toggle flag, so it can take any of its two possible following values (using the manipulators fixed and scientific), or none of them (using ios_base::unsetf):


flag valueeffect when set
fixedwrite floating point values in fixed-point notation.
scientificwrite floating-point values in scientific notation.
(none)write floating-point values in default floating-point notation.

The floatfield flag is not set in standard streams on initialization.

The precision field can be modified using the ios_base::precision member of the stream.

Notice that the treatment of the precision field differs between the default floating-point notation and the fixed and scientific notations. On the default floating-point notation, the precision field specifies the maximum number of meaningful digits to display both before and after the decimal point, while in both the fixed and scientific notations, the precision filed specifies exactly how many digits to display after the decimal point, even if they are trailing decimal zeros.

Parameters

str
Stream object where to apply.
Because this function is a manipulator, it is designed to be used alone with no arguments in conjunction with the insertion (<<) and extraction (>>) operations on streams (see example below).

Return Value

A reference to the stream object.

Example

// modify basefield
#include <iostream>
using namespace std;

int main () {
  double a,b,c;
  a = 3.1415926534;
  b = 2006.0;
  c = 1.0e-10;
  cout.precision(5);
  cout       <<         a << '\t' << b << '\t' << c << endl;
  cout <<   fixed    << a << '\t' << b << '\t' << c << endl;
  cout << scientific << a << '\t' << b << '\t' << c << endl;
  return 0;
}

The execution of this example displays something similar to:

3.1416          2006            1e-010
3.14159 2006.00000 0.00000
3.14159e+000 2.00600e+003 1.00000e-010

See also

fixed Use fixed-point notation (manipulator function)
ios_base::flags Get/set format flags (public member function)
ios_base::setf Set specific format flags (public member function)
ios_base::unsetf Clear specific format flags (public member function)

© The C++ Resources Network, 2000-2007 - All rights reserved
Spotted an error? - contact us