*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.*

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
(les étoiles sont ajoutées par l'éditeur, il faut simplement voir des espaces)
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