2010-10-01 18 views
25

Sono curioso circa l'esistenza di eventuali "arrotondamento" standard" quando si tratta di calcolo dei dati finanziari I miei pensieri iniziali sono di effettuare arrotondamenti solo quando i dati vengono presentati all'utente (presentazione. layer).arrotondamento Standards - Calcoli finanziari

Se "arrotondato" dati vengono poi utilizzati per ulteriori calcoli, dovrebbe essere utilizzare il "arrotondato" figura o la figura "raw"? qualcuno ha qualche consiglio?

si prega di notare che io sono a conoscenza di diversi metodi di arrotondamento, ad esempio arrotondamenti dei banchieri ecc.

+3

Riferimento essenziale: http://en.wikipedia.org/wiki/Office_Space – Skilldrick

+0

Ho questa vaga memoria di alcuni standard da qualcuno che richiede che i calcoli vengano eseguiti in mil (vale a dire $ 0,001 o 1/10 di un centesimo).Ma tu vuoi parlare con un contabile che conosce la tua particolare giurisdizione prima di implementare qualsiasi cosa per cui tu o i tuoi datori di lavoro potreste essere ritenuti responsabili. Sicuramente uno per Overflow CPA. – dmckee

risposta

11

La prima e più importante regola: utilizzare un decimal data type, mai in virgola mobile binario.

Quando è necessario eseguire esattamente l'arrotondamento può essere richiesto da regolamenti, ad esempio la conversione tra lo Euro and national currencies sostituito.

Se non ci sono tali norme, mi piacerebbe fare tutti i calcoli con alta precisione, e rotondo solo per la presentazione, vale a dire non utilizzare valori arrotondati per ulteriori calcoli. Questo dovrebbe fornire la migliore precisione complessiva.

+1

Il binario flottante sarebbe meglio del decimale con una precisione troppo bassa. $ 100⅔ è meglio rappresentato nella base 2 come "100.66666666666 ?????" che in base 10 come "100.67". Ma data una precisione decimale sufficiente, sono d'accordo sul fatto che un tipo di dati decimale di solito è migliore. –

+5

@Joe: No, 100.67 sarebbe quasi sempre migliore perché è quello che le persone si aspettano - e, soprattutto, utilizzando un tipo decimale assicura che 100.01 + 100.07 = 100.08 anziché 200.07999999999998 –

+2

Il tempo per produrre ciò che le persone si aspettano è in fase di visualizzazione, e quando viene eseguito l'arrotondamento (es. '% 0.2f'), le persone vedranno cosa si aspettano. se stai facendo calcoli intermedi, penso che non sia appropriato troncare/arrotondare a sole 2 cifre di precisione. (Ovviamente questo dipende dal calcolo a portata di mano: il calcolo degli interessi giornalieri arrotondato a 2 posti potrebbe aggiungere 0,00 all'account ogni giorno, ma la fattura del cliente non ha bisogno di 15 posizioni di precisione.) –

0

Considerare l'utilizzo di numeri interi scalati.

In altre parole, memorizzare interi numeri di penny invece di numeri frazionari di dollari.

+7

No, questo solo spinge il problema fuori da due punti decimali. Che cosa fai quando è il momento di aggiungere il 5% a $ 1,23? – Doradus

9

ho solo chiesto un programmatore di mainframe greybeard presso la società di software finanziario per cui lavoro, e lui ha detto che c'è di serie non noto e tocca a programmatore pratica.

Mentre gli statistici sono stati a conoscenza del problema di arrotondamento almeno dal 1906, è difficile trovare uno standard finanziario avallando esso.

Secondo lo this sit e, il "rapporto della Commissione europea The Introduction of the Euro and the Rounding of Currency Amounts suggerisce che in precedenza non era stato previsto un approccio standard all'arrotondamento nel settore bancario".

In generale, utilizzare una modalità di arrotondamento simmetrica non importa ciò che di base si sta lavorando in (base 2 o in base 10).

Ciò eviterà la distorsione sistematica durante i calcoli. un

Tale modalità è round-half-to-even, altrimenti noto come "banchieri arrotondamento".

Utilizzare gli strumenti di linguaggio che consentono di specificare l'esplicita del contesto numerico, incluse le modalità di arrotondamento e di troncamento. Ad esempio, il modulo decimal di Python. Le assunzioni implicite fatte dalla libreria C potrebbero non essere appropriate per i tuoi calcoli.

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

+0

Lo standard Euro che hai mandato impone che la metà sia arrotondata "su" (qualunque cosa significhi) che sembra proibire l'arrotondamento imparziale. – Doradus

3

Ive non visto l'esistenza di "quella standard per domarli tutti" - ci sono un certo numero di criteri di arrotondamento (come avete fatto riferimento), e sembrano entrare in gioco basata sull'industria/codice cliente/e valuta (http://en.wikipedia.org/wiki/ISO_4217) - poiché non tutti utilizzano 2 posizioni dopo il decimale, il problema diventa ancora più complicato. Alla fine della giornata, il cliente deve specificare le regole che desidera implementare ...