Saya baru-baru ini merancang modul deret waktu di mana deret waktu saya pada dasarnya adalah a SortedDictionnary<DateTime, double>
.
Sekarang saya ingin membuat unit test untuk memastikan bahwa modul ini selalu berfungsi dan menghasilkan hasil yang diharapkan.
Operasi yang umum adalah menghitung kinerja antara titik-titik dalam deret waktu.
Jadi yang saya lakukan adalah membuat rangkaian waktu dengan, katakanlah, {1.0, 2.0, 4.0} (di beberapa tanggal), dan saya berharap hasilnya adalah {100%, 100%}.
Masalahnya adalah, jika saya secara manual membuat seri waktu dengan nilai-nilai {1.0, 1.0} dan saya memeriksa kesetaraan (dengan membandingkan setiap titik), tes tidak akan lulus, karena akan selalu ada ketidakakuratan ketika bekerja dengan representasi biner nyata angka.
Karenanya, saya memutuskan untuk membuat fungsi berikut:
private static bool isCloseEnough(double expected, double actual, double tolerance=0.002)
{
return squaredDifference(expected, actual) < Math.Pow(tolerance,2);
}
Apakah ada cara lain yang umum untuk menangani kasus seperti itu?