MCPcopy Create free account
hub / github.com/asmuth/clip / formatNumberMetric

Method formatNumberMetric

src/utils/stringutil_impl.h:38–89  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

36
37template <typename T>
38std::string StringUtil::formatNumberMetric(T orig_value) {
39 char buf[128];
40 size_t len = 0;
41 double value = orig_value; // FIXPAUL
42 auto abs_value = fabs(value);
43
44 if (abs_value == 0){
45 len = snprintf(buf, sizeof(buf), "0");
46 }
47
48 else if (abs_value < 0.000000001){
49 len = snprintf(buf, sizeof(buf), "%.1fp", value * 1000000000000);
50 }
51
52 else if (abs_value < 0.000001){
53 len = snprintf(buf, sizeof(buf), "%.1fn", value * 1000000000);
54 }
55
56 else if (abs_value < 0.001){
57 len = snprintf(buf, sizeof(buf), "%.1fμ", value * 1000000);
58 }
59
60 else if (abs_value < 0.1){
61 len = snprintf(buf, sizeof(buf), "%.1fm", value * 1000);
62 }
63
64 else if (abs_value < 10){
65 len = snprintf(buf, sizeof(buf), "%.2f", value);
66 }
67
68 else if (abs_value < 1000) {
69 len = snprintf(buf, sizeof(buf), "%.1f", value);
70 }
71
72 else if (abs_value < 1000000) {
73 len = snprintf(buf, sizeof(buf), "%.1fK", value / 1000);
74 }
75
76 else if (abs_value < 1000000000) {
77 len = snprintf(buf, sizeof(buf), "%.1fM", value / 1000000);
78 }
79
80 else if (abs_value < 1000000000000) {
81 len = snprintf(buf, sizeof(buf), "%.1fG", value / 1000000000);
82 }
83
84 else {
85 len = snprintf(buf, sizeof(buf), "%.1fT", value / 1000000000000);
86 }
87
88 return std::string(buf, len);
89}
90
91
92} // namespace clip

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected