Di recente ho progettato un modulo di serie storiche in cui le mie serie storiche sono essenzialmente a SortedDictionnary<DateTime, double>
.
Ora vorrei creare unit test per assicurarsi che questo modulo funzioni sempre e produca il risultato atteso.
Un'operazione comune è calcolare la prestazione tra i punti nelle serie temporali.
Quindi quello che faccio è creare una serie temporale con, diciamo, {1.0, 2.0, 4.0} (in alcune date), e mi aspetto che il risultato sia {100%, 100%}.
Il fatto è che se creo manualmente una serie temporale con i valori {1.0, 1.0} e controllo l'uguaglianza (confrontando ogni punto), il test non passerebbe, poiché ci saranno sempre imprecisioni quando si lavora con rappresentazioni binarie di reali numeri.
Quindi, ho deciso di creare la seguente funzione:
private static bool isCloseEnough(double expected, double actual, double tolerance=0.002)
{
return squaredDifference(expected, actual) < Math.Pow(tolerance,2);
}
Esiste un altro modo comune di trattare un caso del genere?