Projetei recentemente um módulo de série temporal em que minha série temporal é essencialmente a SortedDictionnary<DateTime, double>
.
Agora eu gostaria de criar testes de unidade para garantir que este módulo esteja sempre funcionando e produzindo o resultado esperado.
Uma operação comum é calcular o desempenho entre os pontos da série temporal.
Então, o que faço é criar uma série temporal com, digamos, {1.0, 2.0, 4.0} (em algumas datas), e espero que o resultado seja {100%, 100%}.
O problema é que, se eu criar manualmente uma série temporal com os valores {1.0, 1.0} e verificar a igualdade (comparando cada ponto), o teste não passará, pois sempre haverá imprecisões ao trabalhar com representações binárias de valores reais. números.
Por isso, decidi criar a seguinte função:
private static bool isCloseEnough(double expected, double actual, double tolerance=0.002)
{
return squaredDifference(expected, actual) < Math.Pow(tolerance,2);
}
Existe outra maneira comum de lidar com esse caso?