net: increase speedrate precision (#2054)
more granular units need lower precision, while less granular need higher precision. assume sane default of: unit | precision KB | 0 MB | 1 GB | 2 Co-authored-by: Patrick Ziegler <p.ziegler96@gmail.com>
This commit is contained in:
parent
26a9bc5964
commit
9f2459be8c
@ -229,15 +229,17 @@ namespace net {
|
|||||||
float time_diff = duration.count();
|
float time_diff = duration.count();
|
||||||
float speedrate = bytes_diff / time_diff;
|
float speedrate = bytes_diff / time_diff;
|
||||||
|
|
||||||
vector<string> suffixes{"G", "M"};
|
vector<pair<string,int>> units{make_pair("G", 2), make_pair("M", 1)};
|
||||||
string suffix{"K"};
|
string suffix{"K"};
|
||||||
|
int precision = 0;
|
||||||
|
|
||||||
while ((speedrate /= 1000) > 999) {
|
while ((speedrate /= 1000) > 999) {
|
||||||
suffix = suffixes.back();
|
suffix = units.back().first;
|
||||||
suffixes.pop_back();
|
precision = units.back().second;
|
||||||
|
units.pop_back();
|
||||||
}
|
}
|
||||||
|
|
||||||
return sstream() << std::setw(minwidth) << std::setfill(' ') << std::setprecision(0) << std::fixed << speedrate
|
return sstream() << std::setw(minwidth) << std::setfill(' ') << std::setprecision(precision) << std::fixed << speedrate
|
||||||
<< " " << suffix << unit;
|
<< " " << suffix << unit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user