Précison dans les calculs

cfumey Messages postés 2 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 16 janvier 2010 - 16 janv. 2010 à 07:40
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 16 janv. 2010 à 16:21
Bonjour

je rencontre un problème curieux de précision de nombres : VB.NET 2008 / Framework 3.5 sous Vista

ci-dessous l'exemple qui permet de bien voir

Dim Y2M As Single
Dim wRes As Single
Dim wRes1 As Single

Y2M = 560.0393981

wRes = Y2M * 100
wRes1 = Y2M / 10
En environnement de développement, le programme lancé, si je pointe sur Y2M j'obtiens Y2M =560.039368 et je peux faire varier Y2M de 560.03934 à 560.0393981 sans que cela change.

Et les calculs suivants conserve la valeur 560.039368; dans les formules mathématiques un peu lourdes, l'imprécision est telle que les résultats ne sont pas acceptables.

Programme compilé j'ai les mêmes résultats; chez un ami sous XP, celui-ci ne fais pas de développement et à priori n'est pas "pollué", le résultat en exécution est identique.

J'ai vérifié en VB6, c'est correct.

Donc, avez-vous des résultats identiques ? connaissez-vous une solution

Merci
Christian

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 janv. 2010 à 13:30
Bosse avec du Double au lieu du Single.

ciao...
BruNews, MVP VC++
0
cfumey Messages postés 2 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 16 janvier 2010
16 janv. 2010 à 15:55
Ce n'est surement pas la bonne réponse !!!
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 janv. 2010 à 16:21
Le nombre de points d'exclamation ne garantit en rien la justesse de l'affirmation.

560.0393981 n'est deja pas codable en Single, alors faire des calculs dessus...


ciao...
BruNews, MVP VC++
0
Rejoignez-nous