Bonjour.
J'utilise le compilateur visual c++ 2008, processeur pentium4.
Voici une opération avec des doubles :
A la sortie, d2 = 5946100.4999....;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <iostream> using namespace std; void main(){ double d1 = 5946100.5; double d2 = 5946048.0; int iVal = 4000; double dDelta = d1 - d2; dDelta /= (double)iVal; for(int i = 0; i < 4000; i++) d2 += dDelta; cout << d2; }
Voici la même chose avec des flottants :
A la sortie, f2 = 5946048;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <iostream> using namespace std; void main(){ float f1 = 5946100.5f; float f2 = 5946048; int iVal = 4000; float fDelta = f1 - f2; fDelta /= (float)iVal; for(int i = 0; i < 4000; i++) f2 += fDelta; cout << f2; }
L'addition ne se fait pas.
Pouvez-vous me dire ce que je n'ai pas compris avec les nombres flottants.
PS : mode debug sans optimisation.
Partager