✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Функція формату валюти C++

26

Пенні за ваші думки

Дано додатне ціле число 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++ оголошує локальну лямбда -функцію за допомогою функціонального синтаксису. Потім групуємо цифри по три і розміщуємо їх у векторі. Потім ми пробиваємо кожну групу, включаючи частину пенні.

Джерело запису: helloacm.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі