C++ ios Library - Function Scientific



Description

It is used to sets the floatfield format flag for the str stream to scientific. When floatfield is set to scientific, floating-point values are written using scientific notation: 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 (precision). Finally, this notation always includes an exponential part consisting on the letter e followed by an optional sign and three exponential digits.

C++98

The floatfield format flag is both a selective and a toggle flag: it can take one or more of the following values as shown below −

flag value effect when set
fixed write floating-point values in fixed-point notation
scientific write floating-point values in scientific notation.
(none) write floating-point values in default floating-point notation.

C++11

The floatfield format flag is both a selective and a toggle flag: it can take any of the following values, or none as shown below −

flag value effect when set
fixed write floating-point values in fixed-point notation.
scientific write floating-point values in scientific notation.
hexfloat

write floating-point values in hexadecimal format.

The value of this is the same as (fixed|scientific)

defaultfloat write floating-point values in default floating-point notation. This is the value by default (same as none, before any other floatfield bit is set).

Declaration

Following is the declaration for std::scientific function.

ios_base& scientific (ios_base& str);

Parameters

str − Stream object whose format flag is affected.

Return Value

It returns Argument str.

Exceptions

Basic guarantee − if an exception is thrown, str is in a valid state.

Data races

It modifies str. Concurrent access to the same stream object may cause data races.

Example

In below example explains about std::scientific function.

#include <iostream>

int main () {
   double a = 3.1415926534;
   double b = 2006.0;
   double c = 1.0e-10;

   std::cout.precision(5);

   std::cout << "default:\n";
   std::cout << a << '\n' << b << '\n' << c << '\n';

   std::cout << '\n';

   std::cout << "fixed:\n" << std::fixed;
   std::cout << a << '\n' << b << '\n' << c << '\n';

   std::cout << '\n';

   std::cout << "scientific:\n" << std::scientific;
   std::cout << a << '\n' << b << '\n' << c << '\n';
   return 0;
}

Let us compile and run the above program, this will produce the following result −

default:
3.1416
2006
1e-010

fixed:
3.14159
2006.00000
0.00000

scientific:
3.14159e+000
2.00600e+003
1.00000e-010
ios.htm
Advertisements