2010-03-29 3 views
0

Essayez de lancer dans un .vbsFixation VBSCRIPT résultats mathématiques inexacts en raison de l'arrondissement

MsgBox(545.14-544.94) 

vous obtenez une réponse peu soignée de 0.199999999999932!

Ce problème se produit également arrondi malheureusement dans Sin (2 * pi) depuis VB ne peut jamais voir la pi variable (définie par l'utilisateur) aussi précis que 3,14159265358979.

L'arrondir manuellement (et perdre en précision) est-il le seul moyen d'améliorer le résultat? Quel est le moyen le plus efficace de traiter ce genre de problème?

+1

Les fichiers .vbs sont VBSCRIPT et non VB6. –

+2

L'arithmétique en virgule flottante a déjà été beaucoup discutée: http://stackoverflow.com/questions/tagged/floating-point – Helen

+0

merci john, vous avez raison, mais cela se produit également en vb6. – Jay

Répondre

2

C'est ainsi que fonctionnent les nombres à virgule flottante, de petites inexactitudes sont à prévoir. Pour une sortie plus agréable, il est plus facile de simplement afficher les résultats arrondis à moins de chiffres.

+0

+1 C'est très bien expliqué ici (un peu ironique, mais très belle explication) http://msmvps.com/blogs/jon_skeet/archive/2009/11/02/omg-ponies-aka-humanity-epic-fail. aspx – MarkJ