Conquer Space 0.0.0
A space themed grand strategy game set in the near future, with realistic orbital mechanics, and an emphasis on economics and politics.
utilnumberdisplay.h
Go to the documentation of this file.
1/* Conquer Space
2 * Copyright (C) 2021-2023 Conquer Space
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16 */
17#pragma once
18
19#include <fmt/format.h>
20
21#include <cmath>
22#include <string>
23
24namespace cqsp {
25namespace util {
26inline std::string LongToHumanString(int64_t l) {
27 if (abs(l) < 1000) {
28 return fmt::format("{}", l);
29 }
30 static const std::string numbers[] = {"k", "M", "B", "T", "Qa", "Qn", "Sx", "Sp", "O",
31 "N", "De", "Ud", "Dd", "Td", "Qd", "Qi", "Sd"};
32 int exponent = static_cast<int>(log10(abs(l)) / 3);
33
34 // Now get the number
35 double d = static_cast<double>(l) / pow(10, exponent * 3);
36
37 // Round this to two decimal points
38 const int precision = 100;
39 d = round(d * precision) / precision;
40
41 return fmt::format("{} {}", d, numbers[exponent - 1]);
42}
43} // namespace util
44} // namespace cqsp
std::string LongToHumanString(int64_t l)
Definition: utilnumberdisplay.h:26
When adding assets, it is extremely crucial that you read cqsp::asset::AssetLoader::LoadResources to ...
Definition: clientctx.h:21