11
votes

Des stratégies communes pour faire face à des erreurs d'arrondies en monnaie intensive?

Quel est votre conseil sur:

  1. compensation d'erreur accumulée dans les opérations mathématiques en vrac sur les collections d'objets d'argent. Comment cela est-il implémenté dans votre code de production pour votre local?
  2. théorie derrière arrondir en comptabilité.
  3. Tout littérature sur sujet.

    Je lis actuellement Fowler . Il mentionne le type d'argent, sa structure de tyccal (INT, long, bigdecimal), mais ne dit rien sur les stratégies.

    Postes plus anciens sur l'arrondi de l'argent ( ici , et ici ) ne fournissez pas de détails et de formalité dont j'ai besoin. < / p>

    Les pensées que j'ai trouvées dans l'INET concernent "Round Half Même" comme le meilleur moyen d'équilibrer l'erreur.

    Merci d'aide.


4 commentaires

Si vous posez des questions sur la comptabilité, vous devez demander à un comptable réel. Ils ont des règles. Aux États-Unis, ce sont les PCGR qui couvre cela. Avez-vous demandé un comptable? Avez-vous trouvé les règles de comptabilité qui s'appliquent dans votre région?


@ S.Lott: Bonjour, je suis en Lituanie. Aujourd'hui, j'ai parlé au travailleur bancaire local :). Elle m'a dit qu'à la fin du mois ou au quart, ils écrivent simplement la divergence. Mais cette réponse ne correspond pas à mes besoins.


Ensuite, trouvez un meilleur comptable. Sérieusement. Ceci est très probablement couvert par la loi en Lituanie. Sinon, la loi, alors par une norme professionnelle (qui est ce que les PCGR sont aux États-Unis). Ceci est bien documenté par les comptables.


@ S.Lott: Merci, S. J'ai trouvé des articles sur le problème et cela semble être une question de normes locales comme vous l'avez mentionnée. J'ai été surpris par la différence de techniques acceptées par les corps des ailerons. Vous pouvez parcourir le sujet en utilisant "l'internationalisation du logiciel", si vous êtes également intéressé ...


6 Réponses :


4
votes

Utilisez l'arrondissement du banquier. Vous rondez au deux penny le plus proche.

http://www.xbeat.net/vbspeed/i_bankersrounding.htm

Vous pouvez développer sur ceci pour arrondi vers le deux penny le plus proche à la place. Donc, 22,5 tours à 22 ans, mais 23,5 tours à 24. 23.1 et 22.9 Tourne à 23. Cependant, l'algorithme du banquier d'origine est plus populaire.


0 commentaires

4
votes

Ne jamais stocker des valeurs de l'argent dans un double ou float - utilisez un int ou long car il n'y a aucun moyen de stocker 0,1 avec précision en binaire.


3 commentaires

Habituellement, ces Int's & Bigdecimal sont des internes d'argent. Ce qui est intéressant, c'est comment combattre l'erreur accumulée lorsque vous effectuez de nombreuses opérations sur de l'argent.


@max: Qu'est-ce que c'est, débordement de la comptabilité? ;)


Quelles opérations faites-vous? Les opérations arithmétiques standard n'auront pas d'erreurs d'arrondies - c'est le but d'utiliser une représentation à point fixe.



3
votes

Tout dépend de l'application. J'espère qu'il n'y a pas trop de situations où l'arrondi est requis. Par exemple, transférer de l'argent d'un compte à un autre ne nécessite aucun arrondi.

Pour les situations où l'arrondi est requis, cela ne comporte pas vraiment ce que vous faites aussi longtemps que vous choisissez une politique, communiquez-la et tenez-la. Par exemple, je crois que l'intérêt de mon compte d'épargne s'élève au centime le plus proche.


0 commentaires

1
votes

J'ai travaillé un peu (juste un peu) avec des montants monétaires et j'étais extrêmement curieux quant à la stratégie utilisée dans ma société ...

Il s'avère que nous utilisons double , mais ils ont réfléchi à ce sujet.

La chose est que les montants que nous traitons ne sont pas si géniaux (disons moins de 10 000) et autant nous avons besoin de 3 chiffres après la décimale, pour un total de 7 chiffres significatifs.

Étant donné que nous utilisons un logiciel 64bits (et C ++), le type double offre suffisamment de chiffres significatifs pour le nombre d'opérations que nous poursuivons dessus :)

Si vous avez besoin de plus de précision, il existe des algorithmes à utiliser (par exemple tout en ajoutant plusieurs fonds) mais personnellement, je pense que le cœur du problème vient dès:

  • conversion d'un de l'argent à un autre, qui continue de changer de cours
  • Problèmes d'impression, avec quelques sommes d'argent nécessitant aucune décimale, d'autres nécessitant 2 au plus, etc.

    Peut-être pourriez-vous augmenter sur les opérations que vous faites?


1 commentaires

Bonjour, Matthieu. J'ai également vu un système hérité travaillant sur des doubles ... nous sommes confrontés à plusieurs problèmes (votre conversion de l'argent mentionnée également). D'autres semblent être mentionnés à l'adresse www.ciceuta.es/euro/doc/1/eup22en.pdf. Typique est d'avoir une divergence en somme totale de petits nombres obtenus par divisions et multiplications. On dirait que je vais augmenter la précision de ces opérations intermédiaires et éventuellement reconstruire des calculs (mais une partie de ces données "de petit chiffre" n'est pas contrôlée par moi). Je viens à la conclusion que nous ignorons l'erreur, soit indemnisez par l'équilibre des précipités comme une demi-heure.



7
votes

Il existe de nombreux problèmes d'arrondi lors de l'enregistrement des données financières. Le premier numéro est la capacité de stocker et de récupérer des nombres décimaux exacts

  • La plupart des bases de données offrent un type de données décimal sur lequel vous pouvez spécifier le nombre de chiffres avant et après le point décimal (les monnaies varient en nombre de chiffres décimaux aussi, j'ai également traité des devises avec 0, 2, 3 chiffres décimaux) < / li>
  • Lorsque vous traitez avec ces données et que vous souhaitez éviter les erreurs d'arrondi inattendues du côté de l'application, vous pouvez utiliser BCD comme une approche générique, ou vous pouvez utiliser des entiers pour représenter toute notation décimale fixe ou mélanger votre propre

    Si ce premier numéro est trié, aucun ajout (ou substraction) ne peut introduire toutes les erreurs d'arrondi. Ideme va pour la multiplication par entier.

    Le deuxième problème, après que vous puissiez stocker et récupérer des données sans perte d'informations, des erreurs d'arrondies attendues en raison de la division (ou de la multiplication par non entier).

    Par exemple, si votre format de devise permet 2 décimales et que vous souhaitez stocker la transaction que les enregistrements permettent d'équilibrer un débit de 10 à 3 pièces égales, vous ne pouvez la stocker que comme xxx

    et xxx

    (erreur d'arrondi)

    Ceci est question de problème qui se produira indépendamment du choix de stockage de type de données et qui doit être pris en charge Si vous voulez que vos comptes équilibrent. Cette situation est principalement introduite par la division (ou par la multiplication par des non-entiers ayant de nombreux chiffres significatifs).

    Un moyen de faire face à cela est de vérifier si vos données s'équilibrent après de telles opérations et reconnaissent la différence d'arrondi autorisée. par opposition à une situation d'erreur.

    EDIT: En ce qui concerne les références à la littérature, Celui-ci semble intéressant et pas trop long et ne préoccupe pas tout à fait large public avec des scénarios intéressants.


3 commentaires

Merci de me rappeler des trucs BCD. Oui, je suis sûr que la persistance est correcte et permet des décimales exactes. Généralement, mon problème peut être distillé à votre point de résumer des petites quantités de rembourrage. La pitié est que je ne contrôle pas complètement cette rupture, je résume moi-même :). Donc, j'avais éventuellement avoir recours à la moitié de la moitié de la moitié de la moitié de la station gaussienne ou de toute autre statistique ...


@Max, eh bien la stratégie sur la gestion de ces erreurs d'arrondi accumulées dépend de votre règlement commercial (parfois, vous devez effectuer des montants égaux et vous devez enregistrer l'erreur, d'autres fois, il est autorisé à distribuer les erreurs d'arrondi).


Parlé à BA, nous apporterons des modifications à notre part et demanderons également des changements dans le système externe qui nous nourrit de ces montants de rupture "peu d'imprécis". Quoi qu'il en soit, cela a été précieux - au moins j'ai commencé à sentir que le personnel arrondi est plus divertissant que je ne pouvais jamais m'attendre :)



2
votes

Ce que vous devriez faire pourrait bien être informé par les conventions du marché ou de la juridiction que vous activez. Par exemple, les obligations de prix du marché australien exigent de contourner certaines opérations intermédiaires à 8 décimales. Le prix final est cité à un nombre spécifique de décimales (3, je pense au sommet de ma tête).

Si vous avez affaire à une application comptable, je m'attendrais à ce que les normes comptables pertinentes pour votre environnement juridique soient éventuellement dictées.


0 commentaires