- Die Verarbeitung von Geldbeträgen ist eine gängige Rechenaufgabe, doch in den gängigen Programmiersprachen gibt es keinen eingebauten Datentyp zur Darstellung von Geldbeträgen
- Das kann bei Aufgaben wie Ratenzahlungen, Devisengeschäften, Gebührenverarbeitung und Steuereinzug zu Rundungsproblemen führen
- Money ist eine Kotlin-Bibliothek, die Berechnungen und Aufteilungen von Geldbeträgen erleichtern soll
- Sie unterstützt mathematische Operationen auf Geldbeträgen, Prozentberechnungen und Aufteilungen und kann so verschiedene Anwendungsfälle modellieren
- Kryptowährungen werden ebenfalls standardmäßig unterstützt
- Aufteilungsfunktion
- Eine der größten Stärken der Bibliothek ist ihre Aufteilungsfunktion
- Sie teilt einen Geldbetrag in mehrere Teile auf und stellt dabei sicher, dass die Summe weiterhin exakt dem ursprünglichen Betrag entspricht
- Wenn ein Kunde zum Beispiel einen Kauf über USD 100.00 in drei Raten bezahlt, lassen sich Verluste durch Rundungsprobleme vermeiden
- Methoden der Aufteilung
- Mit der Methode
allocate() wird sichergestellt, dass das Ergebnis nicht vom ursprünglichen Betrag abweicht.
- Für eine Aufteilung nach Anteilen wird eine Liste von
Percentage-Werten übergeben.
- Standardmäßig verteilt die Bibliothek Differenzen automatisch, dies kann jedoch mit einer gewünschten Verteilungsstrategie angepasst werden.
- Zum Abschluss
- Dieser Beitrag gibt nur eine kurze Einführung in die Funktionen der Bibliothek.
- Geplant ist, die API kompakt zu halten und die Unterstützung für Android-Entwicklung sowie Persistenz- und Serialisierungsfunktionen schrittweise auszubauen.
- Die aktuelle Version soll für alle nützlich sein, die in Kotlin-Projekten mit Geldbeträgen arbeiten.
Zusammenfassung von GN⁺
- Der Umgang mit Geldbeträgen ist in der Programmierung eine häufige Aufgabe, kann aber durch Rundungsprobleme komplex werden.
- Die Money-Bibliothek ist eine Kotlin-Bibliothek, die zur Lösung dieser Probleme entwickelt wurde und eine präzise Aufteilung und Berechnung von Geldbeträgen unterstützt.
- Die Bibliothek unterstützt 306 Währungen und 2283 Kryptowährungen und ist nützlich für den Umgang mit Geldbeträgen in Kotlin-Projekten.
- Ein anderes Projekt mit ähnlichen Funktionen ist zum Beispiel Javas Bibliothek Joda-Money.
1 Kommentare
Hacker-News-Kommentare
Die Verwendung von Infix-Funktionen wirkt etwas seltsam
increaseByunddecreaseBynichtplusundminusüberladen wurdenGlückwunsch zur Bibliothek und danke fürs Teilen
Erinnert an die Benutzerfreundlichkeit des Geld-Typs in Rebol
Fragen zu Edge Cases bei der Verarbeitung von Geld
Ich mag die Unterstützung für benutzerdefinierte Währungen
Es ist seltsam, dass Tabellenkalkulationssprachen Geld nicht gut unterstützen
Der
decimal-Typ in C# eignet sich gut für GeldberechnungenIch habe in den Kommentaren viel gelernt, und das wird bei der nächsten Iteration der Bibliothek helfen
Statt der Bibliothek hätte ich lieber eine gründliche Testsuite, die alle Edge Cases abdeckt
uint64,size_tusw. verwendenScheint alle Anforderungen zu erfüllen, und es gibt eine gute Diskussion über die größten Schwierigkeiten bei der Verarbeitung von Geld