Oprogramowanie do transakcji finansowych - jaka jest praktyka co do typu danych?

Odpowiedz Nowy wątek
2019-03-14 20:59
0

Czego się używa? Typ decimal, czy jednak jakiś typ calkowitoliczbowy reprezentujący grosze/centy ?

Pozostało 580 znaków

2019-03-14 21:33
0

Nigdy nie pisałem takich systemów ale słyszałem, że tylko liczby całkowite. Operacje na dziesiętnych nie zawsze dają dobre rezultaty (tj. dają dobre ale zgodnie z systemem binarnym a nie dziesiętnym).

Gdzieś coś słyszałeś... 2 x 2 = 4 w systemie dziesiętnym, a w binarnym nie? :) To nie jest kwestia systemu, tylko implementacji danego typu numerycznego i jego ograniczeń. Trzeba je znać i wiedzieć jak sobie z nimi radzić. Np. w jaki sposób jednocześnie operować na bardzo dużych i bardzo małych liczbach (np. 12 000 000 000 i 0,0000323023455666). W jaki sposób radzić sobie z resztą z zaokrąglenia - to jest powszechna sytuacja w tego typu systemach. - robertos7778 2019-03-14 22:27

Pozostało 580 znaków

2019-03-14 22:02
1

Albo operujesz na całkowitoliczbowych albo na stałej precyzji, nigdy nie używasz liczb zmiennoprzecinkowych.

Pozostało 580 znaków

2019-03-16 09:17
1

Coś w stylu decimal, nigdy float.

Tyczy się nie tylko logiki procesowania tych "kwot", ale także np. typów danych w bazie danych - znajomy kiedyś chciał zapuścić swojego bota na foreksie, co mu decimale wrzucał do MySQLa pola typu float właśnie (a później pobierał to do "porównań"). Przy "drobnych" różnicach na foreksie, użycie floata, bez wiedzy co on robi z częścią po przecinku, może skończyć się samobójstwem. Podejrzewam, że wiele takich przypadków już miało miejsce.

edytowany 1x, ostatnio: TurkucPodjadek, 2019-03-16 09:18

Pozostało 580 znaków

2019-03-16 11:23
0

Najlepiej typ decimal ew. bigdecimal jeśli jest.
Liczba groszy (int, long, long long, bigint) musi być bardzo pilnowana, bo może zrobić psikusa.


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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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