Запись числа в экспоненциальном видне в строку

Рейтинг: 0Ответов: 2Опубликовано: 16.04.2023
#include <iostream>

using namespace std;

int main()
{
    double a = 1000000000;
    string string = to_string(a);
    cout<<a<<endl;
    cout<<string;
    return 0;
}

Само число выводится как 1e+09, но переводится в строку в обычном виде. Как можно записать в строку число в экспоненциальном виде?

Ответы

▲ 2

Например, так... Как хотите, так и форматируйте — все средства для работы с форматированным выводом в вашем распоряжении.

string sci(double d)
{
    ostringstream os;
    os << fixed              // Используйте тот формат, что вам нужен...
       << setprecision(4)    // Любые манипуляторы из <iomanip>
       << scientific << d; 
    return os.str();
}

Можно и "по-С'шному":

string sci(double d)
{
    char buf[64];
    sprintf(buf,"%lg",d);
    return buf;
}
▲ 0
#include <iostream>  
#include <string>
#include <math.h>
using namespace std;

string scientific (double a){
    int cnt = 0;
    while (a > 9 && fmod (a, 10.0) == 0){
        a = a / 10;
        cnt += 1;
        }
    string v = to_string ((int) a) + "e+" + to_string (cnt);
    return v;
}


 
int main (){
    double a = 550800;
    cout << scientific (a); 
    return 0;
}