Waluta w bazie danych

Odpowiedz Nowy wątek
2019-12-26 11:47

Rejestracja: 1 rok temu

Ostatnio: 2 miesiące temu

0

Witam! Tworzę mini projekt we Flasku i muszę w bazie danych przechować wartość reprezentującą pieniądze. Korzystam z SQLAlchemy i dostaję takie ostrzeżenie:

SAWarning: Dialect sqlite+pysqlite does *not* support Decimal objects natively, and SQLAlchemy must convert from floating point - rounding errors and other issues may occ
ur. Please consider storing Decimal numbers as strings or integers on this platform for lossless storage.

Taką kolumnę stworzyłem ta kwoty:

amount = db.Column(db.Numeric, nullable=False)

W bazie danych wszystko ładnie się przechowuję, tzn. (załącznik 1)!(https://4programmers.net/uploads/attachment/5e/5e048e5b10826.png),
ale gdy przynoszę wartości do HTMLa otrzymuję już coś takiego (załącznik2)!(https://4programmers.net/uploads/attachment/5e/5e048edf43753.png).

Co będzie najlepszym rozwiązaniem? Ucinanie zer, zaokrąglanie? Boję się o niedokładne wartości. Przechowywanie liczb jako stringi(serio?), int z oczywistych powodów odpada...

Pozostało 580 znaków

2019-12-26 12:16

Rejestracja: 5 miesięcy temu

Ostatnio: 9 godzin temu

2

Nie przechowuj pieniędzy w formie zmiennoprzecinkowej tylko liczbowej. Zaoszczędzi to zaokrągleń przy operacjach.

Przy zapisywaniu do bazy mnożysz wartość razy 100, a przy pobieraniu i wyświetlaniu dzielisz.

edytowany 1x, ostatnio: .__., 2019-12-26 12:21
A co jak przy obliczeniach podatkowych potrzebujesz zaokrąglone do 3 miejsc po przecinku? - Tomek Pycia 2019-12-26 14:09
nie wiem - .__. 2019-12-26 15:45

Pozostało 580 znaków

2019-12-26 12:18

Rejestracja: 3 lata temu

Ostatnio: 2 minuty temu

0

A stworzyć swój typ Money?


Pozostało 580 znaków

2019-12-26 12:27

Rejestracja: 8 lat temu

Ostatnio: 27 minut temu

0

https://stackoverflow.com/que[...]-decimal-in-sqlalchemy-sqlite
https://docs.sqlalchemy.org/en/13/core/type_basics.html


Szacuje się, że w Polsce brakuje 50 tys. programistów

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0