#include <round_string.h>
|
template<class T > |
std::string | operator() (const std::pair< T, T > x) const |
|
Definition at line 10 of file round_string.h.
◆ operator()()
template<class T >
std::string round_string::operator() |
( |
const std::pair< T, T > |
x | ) |
const |
|
inline |
Definition at line 12 of file round_string.h.
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;
References alignBH_cfg::fixed, funct::pow(), alignCSCRings::s, and x.