PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → [WD 9] Le type numérique : bug??
[WD 9] Le type numérique : bug??
Débuté par uriel, 17 nov. 2005 13:25 - 4 réponses
Posté le 17 novembre 2005 - 13:25
Bonjour,

Afin d'obtenir une plus grande précision sur mes calculs, je suis en train
de tester le
type "numérique" qui n'existait pas sous windev 7.5.
Seulement, je rencontre un problème étrange : j'ai des erreurs de calcul
lorsque j'additionne
des valeurs : une inversion de signe se fait si j'additionne des négatifs.
Quelqu'un a-t-il déjà rencontré ce problème?

Merci de votre aide.

Uriel AURA
Posté le 17 novembre 2005 - 16:41
Rectification :

Je pense savoir ce qui déclenche le bug, mais je ne vois pas la solution.
Il s'agit en fait d'une multiplication.

Démonstration, prenez le code suivant qui fonctionne :

i est un entier
nSomme, nIncrement sont des numériques (10,10)

// Initialisation de la fonction Hasard()
InitHasard()

// Génération aléatoire d'un nombre réel
nIncrement = Hasard(0, 9999999999) / 1000000000
nSomme = 0.0
POUR i = 1 A 1000
nSomme += nIncrement
nIncrement = Hasard(0, 9999999999) / 1000000000
Trace(nSomme)
FIN

Maintenant, si on change : nSomme += nIncrement
par : nSomme += nIncrement * 1.0

Je vous laisse constater le bug...

Quelle est la solution?

Merci d'avance.


Uriel AURA


"Uriel AURA (Dyn'R)" <uriel@dynr.com> a écrit dans le message de news:
437c635b$1@news.pcsoft.fr...

Bonjour,

Afin d'obtenir une plus grande précision sur mes calculs, je suis en train
de tester le
type "numérique" qui n'existait pas sous windev 7.5.
Seulement, je rencontre un problème étrange : j'ai des erreurs de calcul
lorsque j'additionne
des valeurs : une inversion de signe se fait si j'additionne des négatifs.
Quelqu'un a-t-il déjà rencontré ce problème?

Merci de votre aide.

Uriel AURA

Posté le 17 novembre 2005 - 17:32
C'est pas plutôt l'éternel problème de base de l'informatique en général sur les réels ? (déjà évoqué des dizaines de fois !)
Utiliser le type monétaire pour avoir des claculs justes
Posté le 17 novembre 2005 - 19:00
Heu

Non, je ne pense pas : là c'est carrément une vraie erreur de calcul et non
une erreur d'arrondi.
(pour info, j'utilisais DEJA le type monétaire, mais il n'est limité qu'à 6
chiffres après la virdule).

Essayez le code que j'ai copié, vous verrez ce dont je veux parler : dans la
fenêtre de trace, on voit
des valeurs qui s'ajoutent normalement, mais dans certains cas il y a une
inversion de signe très
très bizarre : ça ressemble à un problème de bit de signe ou de complément
mal géré... enfin c'est ce que j'en dis...

Uriel AURA


"Phil" <philippe.noireau@prive.com> a écrit dans le message de news:
437caa46$1@news.pcsoft.fr...

C'est pas plutôt l'éternel problème de base de l'informatique en général
sur les réels ? (déjà évoqué des dizaines de fois !)
Utiliser le type monétaire pour avoir des claculs justes


Posté le 23 novembre 2005 - 12:55
utilise les numériques signés