Quel est votre conseil sur: p>
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. P>
Postes plus anciens sur l'arrondi de l'argent ( ici A >, 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. P>
Merci d'aide. P>
6 Réponses :
Utilisez l'arrondissement du banquier. Vous rondez au deux penny le plus proche. P>
http://www.xbeat.net/vbspeed/i_bankersrounding.htm p>
Vous pouvez développer sur ceci pour arrondi vers code> 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. P>
Ne jamais stocker des valeurs de l'argent dans un double ou float - utilisez un int code> ou
long code> car il n'y a aucun moyen de stocker 0,1 avec précision en binaire. p>
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.
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. P>
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. P>
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é ... P>
Il s'avère que nous utilisons 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. P>
Étant donné que nous utilisons un logiciel 64bits (et C ++), le type 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: p>
Peut-être pourriez-vous augmenter sur les opérations que vous faites? P> double code>, mais ils ont réfléchi à ce sujet. P>
double code> offre suffisamment de chiffres significatifs pour le nombre d'opérations que nous poursuivons dessus :) p>
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.
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
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. P>
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). P >
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 p> et p> (erreur d'arrondi) p> 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). P> 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. P> 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. P> p>
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 :)
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). P>
Si vous avez affaire à une application comptable, je m'attendrais à ce que les normes comptables pertinentes pour votre environnement juridique soient éventuellement dictées. P>
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é ...