Convert scientific notation to decimal in C++

11,564

Solution 1

There is a method in your output string stream called precision. You can use it to adjust the number of digits after the comma. It defaults to 6 and missing digits are filled up with 0s (hence the name fixed). In order to achieve 4634257.1 being displayed, set precision to 1:

void conversion(double counts)
{
  std::ostringstream ss;
  ss.precision(1);
  ss << std::fixed << counts;
  std::cout << ss.str() << " MeV";
}

Solution 2

You can use std::setprecision.

Share:
11,564
Robert Whitley
Author by

Robert Whitley

Find out all about me by clicking here.

Updated on June 11, 2022

Comments

  • Robert Whitley
    Robert Whitley almost 2 years

    I want to be able to output in decimal and not scientific for all cases in my code.

    If I have 122041e+08 then I want it to display as 122041000

    If I have 4.6342571e+06 then I want it to display as 4634257.1

    ... and so on.

    Using my code, the output for 4.6342571e+06 is 4634257.100000

    void conversion(double counts)
    {
      std::ostringstream ss;
      ss << std::fixed << counts;
      std::cout << ss.str() << " MeV";
    }
    

    Can someone explain to me why it adds 0's to the end and if it's possible to remove them.

  • Abhishek Mane
    Abhishek Mane almost 3 years
    ideone.com/5CmObK see here scientific number is converting into normal float number by use of std::fixed rather than std::setprecision. I don't claim mine is right but I am telling you what I observing. I am new to c++;