summaryrefslogtreecommitdiff
path: root/finance/income.py
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2024-09-04 20:16:15 +0200
committerxengineering <me@xengineering.eu>2024-09-08 17:21:32 +0200
commitb85de39cd765164d5a31836cb7ca106ad6e328a7 (patch)
treeaf883c0203f564b0842b18797cc69007632a7fba /finance/income.py
parent4f3d4de3796744ee1d6d0e91e8bec76e0487de90 (diff)
downloadfinance-py-b85de39cd765164d5a31836cb7ca106ad6e328a7.tar
finance-py-b85de39cd765164d5a31836cb7ca106ad6e328a7.tar.zst
finance-py-b85de39cd765164d5a31836cb7ca106ad6e328a7.zip
Switch to decimal.Decimal for money
Floating point data types are not suitable to represent money since rounding issues will sum up.
Diffstat (limited to 'finance/income.py')
-rw-r--r--finance/income.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/finance/income.py b/finance/income.py
index 94759ff..8d775cb 100644
--- a/finance/income.py
+++ b/finance/income.py
@@ -1,17 +1,18 @@
import dataclasses
from datetime import datetime
+from decimal import Decimal
@dataclasses.dataclass(kw_only=True, frozen=True)
class Income:
"""Income models financial income paid on the first day of a month"""
- amount: float
+ amount: Decimal
- def integrate(self, start: datetime, end: datetime) -> float:
+ def integrate(self, start: datetime, end: datetime) -> Decimal:
"""Integrate the income from a start to an end date"""
- retval = 0.0
+ retval = Decimal(0.0)
current = datetime(start.year, start.month, 1)