La dichiarazione dei tue campi numerici in questione è fatta all'inizio del form:
PRIVATE f_SaldoFin AS Float
PRIVATE f_TotResta AS Float = 0
f_TotResta è valorizzato a '0' nella stessa riga di dichiarazione perchè il suo contenuto viene sempre incrementato, mentre f_SaldoFin non ha bisogno di una valorizzazione iniziale perchè, la prima volta che riceve dati , li riceve tramite trasferimento. Entrambi i campi possono ricevere valori decimali o interi a seconda che la moneta in circolazione sotto la data corrente sia €uro o £ira. A parte tutto ciò, io sono convinto che il valore raggiunto in un dato momento da f_TotResta sia non proprio (tanto per rimanere nell'esempio) 385.87, ma un valore inferiore, assai vicino ad esso. Solo così posso spiegarmi il nuovo valore dopo il troncamento con
f_TotResta = Fix(f_TotResta * 100) / 100.
Il troncamento si rende necessario per potere ottenere, in casi come quello che si è manifestato ieri, un'uguaglianza dalla if successiva che altrimenti non si verifecherebbe. Non dimentichiamo poi che la nostra attuale moneta arriva fino ai centesimi.
Purtroppo, sempre nello stesso programma, ho dovuto affrontare già in altre occasioni situazioni di valori numerici float che nominalmente avrebbero dovuto esporre valori uguali, ma che in pratica non è avvenuto, proprio come è successo ieri. Ciò mi ha fatto pensare al troncamento fino alle due cifre decimali. Però, alla luce della prova fatta ieri notte, dopo la tua brillante idea (io non ci avevo proprio pensato), resto sempre dell'opinione che la strada più sicura da percorrere sia il passaggio dei valori in campi di comodo, in formato stringa, come nella formula algoritmica con cui ho riaperto la discussione.
Grazie comunque, ti sono veramente grato.