Запись числа в экспоненциальном видне в строку
#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 шт):
Автор решения: Faldown
→ Ссылка
#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;
}
Автор решения: Harry
→ Ссылка
Например, так... Как хотите, так и форматируйте — все средства для работы с форматированным выводом в вашем распоряжении.
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;
}