da notare inoltre che ad ogni modo vb è proprio inadatto per certe cose, e
vengono fuori degli gravi errori logici.
Dim n As Double = (1018 - 10) / 990 '= 1.01818181818182 (14 cifre decimali)
[...]
Abbiamo un numero periodico, che come tutti i numeri periodici dovrebbe
avere infinite cifre decimali (altro che 14).
Un numero periodico quindi lo puoi moltiplicare per 10 quanto vuoi, ma
rimarrà sempre un decimale.
Per cui il ciclo While dovrebbe ripetersi all'infinito, cosa che non
accade...
Non è VB ad essere inadatto!
Comportamenti del genere si verificherebbero anche in C, C++, C# e qualsiasi
linguaggio che usi lo standard IEEE 754 per rappresentare i numeri in
virgola mobile.
Un numero periodico (così come un numero trascendente come pi greco, o la
'e' di Nepero, etc.) *non* è rappresentabile in maniera esatta e completa
usando numeri in virgola mobile nel formato IEEE 754.
IEEE 754 è un *modello* di un concetto matematico astratto (il numero
"reale"), e come ogni modello esso è una rappresentazione *parziale*
dell'ente che si vuole modellare.
Se vuoi, mettila in questi termini: il computer ha dei registri (ed una
memoria) *finita*, quindi non puoi rappresentare infinite cifre decimali.
In certi casi, si potrebbe pensare di rappresentare un numero periodico
(come ad es. 1/3 = 0,3333....) non come numero in virgola mobile, ma con la
sua frazione generatrice.
Ovvero, si potrebbe definire una classe ad es. 'NumeroRazionale', costituita
da un paio di data member interi: 'Numeratore' e 'Denominatore'.
In tal caso, 1/3 non vorrebbe rappresentato come 0,333....3 troncato, ma
semplicemente come la coppia di interi 1 (numeratore) e 3 (denominatore).
Poi si potrebbero definire per questa classe operatori di somma, differenza,
etc. (le classiche operazioni con le frazioni che si imparano alla scuola
media inferiore, per intenderci).
E magari anche un metodo ToDouble(), che esegue semplicemente il rapporto
Numeratore/Denominatore, ritornando un double IEEE 754 (però in questo caso
si abbandonerebbe la precisione "esatta" data dalle frazioni, e si
passerebbe a quella approssimata tipica dei double).
(Ma ovviamente tale sistema non è applicabile ad esempio a pi greco, che è
un numero reale ma non un numero razionale.)
Giovanni