Search code examples
c++decimalscientific-notation

Convert scientific notation to decimal in C++


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.


Solution

  • 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";
    }