Programowanie > C/C++

jak w C++ robić operacje na pieniądzach

(1/2) > >>

KelThuzad:
Paweł mam pytanie kiedyś mi napisałeś że jest specjalne miejsce dla ludzi którzy do obliczeń finansowych używają float double i temu podobnych. A teraz chciałbym się zabrać za tą część programu możesz mi coś poradzić?

Paweł Kraszewski:
Najprościej trzymać kwotę wyrażoną w groszach (albo dziesiątych/setnych grosza, jak trzeba większej kontroli nad zaokrąglaniem) na dużym int, np int64_t. Jest to metoda nazywana "decimal fixed point" albo w skrócie typ decimal.

Dobrym ćwiczeniem byłoby zawinięcie tego w klasę z implementacja operatorów arytmetycznych i wyjścia-wejścia.

KelThuzad:
Czyli chodzi o to ze zł to int i grosze to int a później to się łączy? Czy dobrze rozumiem.

Paweł Kraszewski:
Nie. W ogóle nie posługujesz się złotówkami. 15.50 zł to 1550 groszy i trzymasz to jako 1550 w int. Wszystkie operacje typu dodawanie i odejmowanie wartości oraz mnożenie i dzielenie wartości przez skalar (żeby nie mieć groszy kwadratowych) działają poprawnie, tylko trzeba pamiętać, że wynik to x/100 złotych i x%100 groszy.

KelThuzad:
A mam takie pytanie bo mam coś takiego do napisania jak smart saver. Jest to opcja w banku która zaokrągla wydane pieniądze do pełnej liczby i resztę przelewa na konto oszczędnościowe. chodzi o to gdy place kartą np. 33,33 to bank bierze to jako 35 zl i od tego odejmuje 33,33 i 1,67 przelewa na konto lub jak place 16 zl to na konto oszczędnościowe przelewają mi 4zł. I to chciałem zrobić ze mam grosze osobno i odejmuj je od 100 i reszta to grosze na konto i dodaje jeden do części zł a później zł dodaje tak długo aż będzie podzielne przez 5.

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

Idź do wersji pełnej