2010-10-01 16 views
25

Jestem ciekawy, czy istnieją jakiekolwiek "zaokrąglenia" standardów "w odniesieniu do obliczania danych finansowych." Moje wstępne przemyślenia dotyczą wykonywania zaokrągleń tylko wtedy, gdy dane są prezentowane użytkownikowi (prezentacja warstwa).Standardy zaokrąglania - Obliczenia finansowe

Jeśli „zaokrąglone” dane te są następnie wykorzystywane do dalszych obliczeń, należy użyć „zaokrąglone” figura lub „surowy” postać? czy ktoś ma jakieś rady?

należy pamiętać, że znam różnych metod zaokrąglania, np. dla bankierów itp.

+3

Niezbędne odniesienie: http://pl.wikipedia.org/wiki/Office_Space – Skilldrick

+0

Mam niewyraźne wspomnienie niektórych standardów od ktoś wzywa do obliczeń w milach (tj. 0,001 USD lub 1,10 centa).Ale chcesz porozmawiać z księgowym, który zna twoją jurysdykcję, zanim zaimplementujesz coś, za co ty lub twoi pracodawcy mogą być odpowiedzialni. Zdecydowanie jeden dla przepełnienia CPA. – dmckee

Odpowiedz

11

Pierwsza i najważniejsza zasada: użyj decimal data type, nigdy binarne typy zmiennoprzecinkowe.

Po wykonaniu dokładnego zaokrąglenia może być wymagane przez przepisy, takie jak zamiana między Euro and national currencies, którą zastąpiono.

Jeśli nie ma takich reguł, wykonałbym wszystkie obliczenia z dużą precyzją i zaokrąglono tylko dla prezentacji, tj. Nie użyłem wartości zaokrąglonych do dalszych obliczeń. Powinno to zapewnić najlepszą ogólną precyzję.

+1

Opóźnienie binarne byłoby lepsze niż dziesiętne ze zbyt małą precyzją. 100 USD jest lepiej reprezentowane w bazie 2 jako "100.66666666666 ?????" niż w bazie 10 jako "100,67". Ale biorąc pod uwagę wystarczającą liczbę dziesiętną, zgadzam się, że dziesiętny typ danych jest zwykle lepszy. –

+5

@Joe: Nie, 100.67 prawie zawsze byłaby lepsza, ponieważ tego oczekują ludzie - i, co ważniejsze, użycie typu dziesiętnego zapewnia, że ​​100.01 + 100.07 = 100.08 zamiast 200.07999999999998 –

+2

Czas na wyprodukowanie tego, czego ludzie oczekują, to czas wyświetlania, i gdy wykonywane jest tam zaokrąglanie (np. "% 0.2f"), ludzie zobaczą, czego oczekują. jeśli wykonujesz obliczenia pośrednie, myślę, że niewłaściwe jest obcinanie/zaokrąglanie do zaledwie 2 cyfr precyzji. (Oczywiście zależy to od obliczeń na wyciągnięcie ręki.Data dziennego naliczania odsetek zaokrąglona do 2 miejsc może codziennie dodać 0,00 do konta, ale faktura odbiorcy nie potrzebuje 15 miejsc dokładności.) –

0

Należy rozważyć użycie skalowanych liczb całkowitych.

Innymi słowy przechowuj całe liczby monet zamiast ułamkowych liczb dolarów.

+7

Nie, to tylko wypchnie problem przez punkty dziesiętne Twp. Co robisz, gdy trzeba dodać 5% do 1,23 USD? – Doradus

9

Właśnie spytałem programistę mainframe o greybeard w firmie z branży oprogramowania finansowego, dla której pracuję, i powiedział, że nie ma dobrze znanego standardu i zależy to od praktyki programisty.

Podczas gdy statystycy zdawali sobie sprawę z kwestii zaokrąglania od co najmniej 1906 roku, trudno jest znaleźć odpowiedni standard finansowy.

Zgodnie z this sit e, "raport Komisji Europejskiej The Introduction of the Euro and the Rounding of Currency Amounts sugeruje, że wcześniej nie było standardowego podejścia do zaokrąglania w bankowości."

Generalnie, używaj symetrycznego trybu zaokrąglania, bez względu na to, w jakiej bazie pracujesz (base-2 lub base-10).

Pozwoli to uniknąć systematycznych błędów podczas obliczeń.

Taki tryb jest Round-Half-To-Even, inaczej znany jako "zaokrąglanie bankierów".

Użyj narzędzi językowych, które umożliwiają określenie explicity kontekstu liczbowego, w tym zaokrąglenia i tryby obcinania. Na przykład moduł Pythona decimal. Niejawne założenia wykonane przez bibliotekę C mogą nie być odpowiednie dla twoich obliczeń.

http://en.wikipedia.org/wiki/Rounding#Rounding_to_integer

+0

Norma euro, którą łączysz, upoważnia, że ​​połowa jest zaokrąglana "w górę" (cokolwiek to oznacza), która wydaje się zakazać obiektywnego zaokrąglania. – Doradus

3

Ive nie widział istnienie „normą jeden by wszystkimi rządzić” - istnieją dowolną liczbę zaokrąglania zasady (jak masz odniesienia), a oni wydają się wchodzić w grę na podstawie przemyśle/klient/i kod waluty (http://en.wikipedia.org/wiki/ISO_4217) - ponieważ nie wszyscy używają 2 miejsc po przecinku, problem staje się jeszcze bardziej skomplikowany. Na koniec dnia klient musi określić reguły, które chce wdrożyć ...