How do I make
std::cout << 123456789.12
print this:
123456789.12
It always prints this:
1.23457e+008
I know that I have to play with the flags, but I cant quite figure out the right combination. If I set the fixed flag, it prints
123456789.120000
How to ... ?
One way :-
#include <iostream>
#include <iomanip>
int main() {
double f =123456789.12;
std::cout << std::fixed << std::setprecision(2) << f << '\n';
return 0;
}
See here
Please look for appropriate references
You can use:
#include <iostream>
#include <limits>
using namespace std;
int main() {
double c = 123456789.12;
cout.precision(numeric_limits<double>::digits10 + 1);
cout << c << endl;
return 0;
}
Basically the limits
package has traits for all the build-in types. One of the traits for floating point numbers ( float/double/long double
) is the digits10
attribute . This defines the accuracy of a floating point number in base 10.
See it live: http://ideone.com/Ity9m7
To read on, check out another similar question: How do I print a double value with full precision using cout?
You can use boost::lexical_cast as follow:
#include <boost/lexical_cast.hpp>
std::cout << boost::lexical_cast<std::string>(123456789.12);
more info can be found in http://www.boost.org/doc/libs/1_55_0/doc/html/boost_lexical_cast.html
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.