*Bonjour,*
Regardez le résultat obtenu dans la fenêtre d'exécution. Je fais de simples additions avec des grands nombres. Jusqu'à 1E+32, tout va bien. Après, c'est la catastrophe...
Si quelqu'un à une explication à donner pour ce drôle de résultat, je suis preneur.
*Merci d'avance.*
(les étoiles sont ajoutées par l'éditeur, il faut simplement voir des espaces)
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 Sub test_num() ' Est-ce que je ne sais plus calculer ? C'est la honte ! Dim x As Single, y As Single Dim i As Integer, exp As String x = 1E+38 Debug.Print "-- " & FormatNumber(x, 0) For i = 38 To 0 Step -1 exp = IIf(i < 10, " " & CStr(i), CStr(i)) y = val("1E+" & CStr(i)) Debug.Print exp & " " & FormatNumber(x + y, 0) Next End Sub
On voit que les premiers résultats correspondent bien à ce qui est attendu, en rouge
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 call test_num -- 100*000*000*000*000*000*000*000*000*000*000*000*000 38 200*000*000*000*000*000*000*000*000*000*000*000*000 37 110*000*000*000*000*000*000*000*000*000*000*000*000 36 101*000*000*000*000*000*000*000*000*000*000*000*000 35 100*100*000*000*000*000*000*000*000*000*000*000*000 34 100*010*000*000*000*000*000*000*000*000*000*000*000 33 100*001*000*000*000*000*000*000*000*000*000*000*000 32 100*000*100*000*000*000*000*000*000*000*000*000*000 31 100*000*000*000*000*000*000*000*000*000*000*000*000 30 100*000*000*000*000*000*000*000*000*000*000*000*000 29 100*000*000*000*000*000*000*000*000*000*000*000*000 28 100*000*000*000*000*000*000*000*000*000*000*000*000 27 100*000*000*000*000*000*000*000*000*000*000*000*000 26 100*000*000*000*000*000*000*000*000*000*000*000*000 25 100*000*000*000*000*000*000*000*000*000*000*000*000 24 100*000*000*000*000*000*000*000*000*000*000*000*000 23 100*000*000*000*000*000*000*000*000*000*000*000*000 22 100*000*000*000*000*000*000*000*000*000*000*000*000 21 100*000*000*000*000*000*000*000*000*000*000*000*000 20 100*000*000*000*000*000*000*000*000*000*000*000*000 19 100*000*000*000*000*000*000*000*000*000*000*000*000 18 100*000*000*000*000*000*000*000*000*000*000*000*000 17 100*000*000*000*000*000*000*000*000*000*000*000*000 16 100*000*000*000*000*000*000*000*000*000*000*000*000 15 100*000*000*000*000*000*000*000*000*000*000*000*000 14 100*000*000*000*000*000*000*000*000*000*000*000*000 13 100*000*000*000*000*000*000*000*000*000*000*000*000 12 100*000*000*000*000*000*000*000*000*000*000*000*000 11 100*000*000*000*000*000*000*000*000*000*000*000*000 10 100*000*000*000*000*000*000*000*000*000*000*000*000 9 100*000*000*000*000*000*000*000*000*000*000*000*000 8 100*000*000*000*000*000*000*000*000*000*000*000*000 7 100*000*000*000*000*000*000*000*000*000*000*000*000 6 100*000*000*000*000*000*000*000*000*000*000*000*000 5 100*000*000*000*000*000*000*000*000*000*000*000*000 4 100*000*000*000*000*000*000*000*000*000*000*000*000 3 100*000*000*000*000*000*000*000*000*000*000*000*000 2 100*000*000*000*000*000*000*000*000*000*000*000*000 1 100*000*000*000*000*000*000*000*000*000*000*000*000 0 100*000*000*000*000*000*000*000*000*000*000*000*000
Partager