7

i have floating point variables "lmin" and "lmax". i wish to display only 4 significant digits. i am currently using something i have found online of the form ...

string textout;
stringstream ss;

ss << lmin;
textout = ss.str();
output(-0.5, -0.875, textout);

ss.str("");
ss << lmax;
textout = ss.str();
output(0.2, -0.875, textout);

where "output" is simply a function i wrote to parse the string and print it to the screen. the important point, is how do i print only a ROUNDED version of lmin and lmax to ss?

1

2 Answers 2

13

Use std::setprecision to specify the number of digits after the decimal point.

#include <sstream>
#include <iostream>
#include <iomanip>

int main()
{
  double d = 12.3456789;
  std::stringstream ss;

  ss << std::fixed << std::setprecision( 4 ) << d;

  std::cout << ss.str() << std::endl;
}

Output:

12.3457
Sign up to request clarification or add additional context in comments.

3 Comments

while this almost perfectly answers my question, i'm going to push the envelop a bit farther and ask if there is a simple way to print it to scientific notation? if i have 12.3457, i will want only 4 digits, not necessarily 4 digits after the decimal, so i would want 12.34 (or equivalently, 1.234e+1)
@Laurbert515 Just take out the std::fixed part, default is scientific :). Or you can explicitly use std::scientific
@Laurbert515 Seems I was wrong about the default part, sorry. ideone.com/a07Z0
1

Simply use ss.precision( 4 ) or ss << std::setprecision( 4 ) before inserting the output.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.