X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FStatistics.cc;h=cc13424f2914cb648da8b4af373a66e263a106f5;hb=6cd09bf0b05c7b26aa57409b510311b235180528;hp=a9cb32581f89c88a08345769b7e6d6b35dd54d16;hpb=82e794070d4f3ae8aacb1827b21a93b9d48ce57f;p=senf.git diff --git a/senf/Utils/Statistics.cc b/senf/Utils/Statistics.cc index a9cb325..cc13424 100644 --- a/senf/Utils/Statistics.cc +++ b/senf/Utils/Statistics.cc @@ -81,28 +81,33 @@ senf::StatisticsBase::output(unsigned n) } // -// generate an engineering style notation i +// generate an engineering style notation // -char *format_eng( float f) +std::string format_eng( float f) { - static char buf[16]; + char buf[16]; if (f > 0) { int n = 0; while( f >= 1000.0f) { - f /= 1000.f; + f /= 1000.0f; n+=3; } - sprintf( buf, " %3.2fe%+03d", f, n); + if( n >=3) + sprintf( buf, " %3.2fe%+03d", f, n); + else + sprintf( buf, " %3.2f", f); } else if (f < 0) { int n = 0; while( f <= -1000.0f) { - f *= 1000.f; + f *= 1000.0f; n+=3; } - - sprintf( buf, "%3.2fe%+03d", f, n); + if( n >=3) + sprintf( buf, " %3.2fe%+03d", f, n); + else + sprintf( buf, " %3.2f", f); } else{ sprintf( buf, " 0.00"); @@ -290,7 +295,7 @@ prefix_ void senf::Collector::enter(float min, float avg, float max) if (min < accMin_) accMin_ = min; if (max > accMax_) accMax_ = max; if (++i_ >= rank_) { - StatisticsBase::enter(accMin_, accAvg_ / rank_, accMax_); + StatisticsBase::enter(accMin_, accAvg_ / i_, accMax_); i_ = 0; accMin_ = FLT_MAX; accAvg_ = 0.0f;