13 int val_digit(0), err_digit(0);
16 while( fabs(
x.first) /
pow(10, val_digit) < 1 ) val_digit--;
17 while( fabs(
x.first) /
pow(10, val_digit) > 10 )val_digit++;
20 while(
x.second /
pow(10,err_digit) < 0.95 ) err_digit--;
21 while(
x.second /
pow(10,err_digit) > 9.50 ) err_digit++;
24 if(val_digit<err_digit) val_digit=err_digit;
25 const bool scinot = (val_digit<-1 || err_digit>0);
28 s <<
std::fixed << std::setprecision( scinot? val_digit-err_digit : -err_digit)
29 << ( scinot?
x.first/
pow(10,val_digit) :
x.first )
31 <<
unsigned(
x.second /
pow(10,err_digit) + 0.5) <<
")";
32 if(scinot)
s<<
"e" << (val_digit>0 ?
"+" :
"") << val_digit;