19#include <fmt/format.h>
29 if constexpr (!(std::is_same<T, uint64_t>::value || std::is_same<T, uint32_t>::value)) {
30 absolute_value = std::abs(l);
32 if (absolute_value <
static_cast<T
>(1000)) {
33 return fmt::format(
"{}", l);
35 static const std::string numbers[] = {
"k",
"M",
"B",
"T",
"Qa",
"Qn",
"Sx",
"Sp",
"O",
36 "N",
"De",
"Ud",
"Dd",
"Td",
"Qd",
"Qi",
"Sd"};
37 int exponent =
static_cast<int>(std::log10(absolute_value) / 3);
40 double d =
static_cast<T
>(l) / pow(10, exponent * 3);
43 const int precision = 100;
44 d = round(d * precision) / precision;
46 return fmt::format(
"{} {}", d, numbers[exponent - 1]);
std::string NumberToHumanString(const T l)
Definition: utilnumberdisplay.h:26