C++-Währungszahlenformatfunktion
Ein Penny für deine Gedanken
Bei einer positiven Ganzzahl n, die den Betrag in Cent darstellt, den Sie haben, geben Sie den formatierten Währungsbetrag zurück. Beispiel: Bei n = 123456 geben Sie „1.234,56″ zurück.
Beispiel 1
Eingang
n = 132
Ausgang
„1,32″Beispiel 2
Eingang
n = 2
Ausgang
„0.02″Beispiel 3
Eingabe
n = 100000000
Ausgabe
„1.000.000,00″
Formatieren Sie eine Währungsnummer mit C++
Obwohl diese Aufgabe mit der eingebauten Funktion wie printf oder dem String-Format (in Python) einfach erscheinen mag, scheint es keine trivale Aufgabe zu sein, diese Zahlen-/Währungsformatierung zu implementieren. Zuerst müssten wir den Penny-Teil (Bruch) erhalten, indem wir die letzten beiden Ziffern berechnen (Rest von 100). Dann müssen wir die anderen Ziffern in drei gruppieren.
Wir brauchen eine String-Pad-Funktion, um die führenden Nullen für die mittleren Gruppen und auch den Penny (bis zu 2 Ziffern wie 0,01) hinzuzufügen. Die höchstwertige Gruppe sollte keine führenden Nullen hinzufügen. Die Nummern werden durch Komma getrennt.
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;
}
Die obige C++-Funktion deklariert eine lokale Lambda- Funktion unter Verwendung der funktionalen Syntax. Dann gruppieren wir die Ziffern in drei und fügen sie in den Vektor ein. Dann polstern wir jede Gruppe einschließlich des Penny-Teils.