1

私は主に職場で Delphi を使用しており、日付時刻の比較を含む徹底的な単体テスト中に、計算された日付などを比較する場合、equals 演算子を使用した直接比較は十分に信頼できないことがわかりまし。 Delphi での日付比較用の組み込み関数。

C# では習慣により、標準の演算子を使用して日付/時刻を比較します=<>DateTime.CompareDateTime.Equalsなどの日付時刻比較用の同様の関数があるため、精度と信頼性の観点から、代わりに組み込み関数を使用する必要がありますか?

演算子を使用するよりも正確な比較ができますか?

4

2 に答える 2

4

日付/時刻が計算されていることを考えると、時刻の差を計算したほうがよいでしょうTimeSpan

TimeSpan travelTime = arrival - departure;

次に、これが許容範囲よりも小さいことを確認できます。

if (Math.Abs(travelTime.TotalMilliseconds) < tolerance)
{
    // times are equal.
}

これは、浮動小数点値に必要なアプローチに似ていますが、それとは無関係です。この場合、不正確さはメモリ内での表現方法ではなく、データに起因するためです。

于 2011-01-22T11:59:38.490 に答える
1

よくわかりませんが、同僚から、常にEquals演算子を使用するように言われました。DateTimeオブジェクトの場合、EqualsおよびCompareティックを比較しています。

TimeSpanChrisFが言及した方法について詳しく知りたい場合は、こちらを参照してください。

于 2011-01-22T12:01:31.697 に答える