Функція формату валюти C++
Пенні за ваші думки
Дано додатне ціле число n, що представляє суму у вас у центах, поверніть відформатовану суму у валюті. Наприклад, якщо n = 123456, поверніть «1234,56».
Приклад 1
Вхід
n = 132
Вихід
«1,32»Приклад 2
Вхід
n = 2
Вихід
«0,02»Приклад 3
Вхідні дані
n = 100000000
Вихідні дані
«1 000 000,00»
Відформатуйте номер валюти за допомогою C++
Хоча це завдання може здатися простим із вбудованою функцією, такою як printf або формат String (у Python), реалізація цього форматування числа/валюти здається непростим завданням. Спочатку нам потрібно буде отримати копійчану частину (дріб), обчисливши останні дві цифри (залишок на 100). Потім нам потрібно згрупувати інші цифри в три.
Нам потрібна функція string pad, щоб додати початкові нулі для середніх груп, а також пенні (до 2 цифр, наприклад 0,01). Найзначніша група не повинна додавати початкові нулі. Цифри розділяються комою.
string solve(int n) {
auto pad = [](int v, int d) {
string ans = std::to_string(v);
if (ans.size() < d) {
ans = string(d - (int)ans.size(), '0') + ans;
}
return ans;
};
int cents = n % 100;
n /= 100;
vector<int> groups;
while (n > 0) {
groups.insert(begin(groups), n % 1000);
n /= 1000;
}
string ans = "";
if (!groups.empty()) {
ans += std::to_string(groups[0]);
if (groups.size() > 1) {
ans += ",";
for (int i = 1; i + 1 < groups.size(); ++ i) {
ans += pad(groups[i], 3) + ",";
}
ans += pad(groups.back(), 3);
}
} else {
ans += "0";
}
ans += ".";
ans += pad(cents, 2);
return ans;
}
Наведена вище функція C++ оголошує локальну лямбда -функцію за допомогою функціонального синтаксису. Потім групуємо цифри по три і розміщуємо їх у векторі. Потім ми пробиваємо кожну групу, включаючи частину пенні.