Ciao a tutti.
Sono a chiedervi se usate nelle vostre applicazioni le notazioni "floating point pure" ossia con i NAN, -INF, +INF
In pratica, mascherate le eccezioni matematiche ? Usate cosė:
var a: double = -5;
var b: double = 0;
ShowMessage((a/b).ToString); //<------- visualizza "-INF"
ShowMessage(sqrt(a).ToString); //<------- visualizza "NAN"
oppure usate le classiche eccezioni con try / except ?
Per usare il formato completo senza eccezioni si deve usare qualcosa come :
SetExceptionMask(GetExceptionMask + [exDenormalized, exOverflow, exZeroDivide, exInvalidOp]);
Le variabili double assumono valori "particolari" nella loro configurazione (segno, mantissa, esponente,) quando i valori non possono essere rappresentati come numero standard, qui potete vedere le specifiche: https://www.oreilly.com/library/view/delphi-in-a/1565926595/re72.html (https://www.oreilly.com/library/view/delphi-in-a/1565926595/re72.html)
Finora nelle applicazioni che ho sviluppato le eccezioni erano sempre gestite (ossia -5 / 0 = Errore) e usavo la "mascheratura" solo per le chiamate a DLL, in particolare quelle sviluppate in C.
Non ho quindi esperienza sulla esecuzione con NAN, INF, etc ...
Le operazioni vengono completamente eseguite sempre ? O avete esperienza di problemi ?
Ovvio che nel momento si debbano verificare le variabili si possono usare funzioni come IsNAN(...).
Riportate le vs. esperienze.
Ciao ciao.