2

这段代码:

if (dt.Subtract(prevDt).TotalMinutes == 15)

(“dt”和“prevDt”是包含诸如“7/20/2012 7:30:00 AM”和“7/20/2012 7:45:00 AM”等值的日期时间变量)

...导致 ReSharper 警告我:

“浮点数与等式运算符的比较。四舍五入时可能会丢失精度。”

这是一个有效的警告吗?如果是,我将如何安抚它?我希望 ReSharper 更像 Eclipse,它可以解决它抱怨的问题。

无论如何,代码似乎运行良好,但如果这是代码气味,我宁愿不让它臭臭。

4

3 回答 3

4

如果你确定你的时间戳正好在 15 分钟的边界上,而不是几毫秒,那么你的代码就可以正常工作。可以精确表示为 an 的int值也可以精确表示为 double。

如果您想尝试重写代码以避免警告,您可能想尝试以下操作:

if (prevDt.AddMinutes(15) == dt)
于 2012-07-20T23:31:09.023 回答
4

不,如果您的日期总是正好相隔 15 分钟,否则没有秒或毫秒(或滴答声)的差异,这不是一个有效的警告。

于 2012-07-20T23:31:43.373 回答
1

您可以将Minutes与所有其他属性(天/小时...)一起使用来比较您关心的部分的 TimeSpan(即忽略秒)。

否则,如果您的值可能包含秒/毫秒,则最好检查 TotalMinutes 是否不会太远而不是完全匹配。

于 2012-07-20T23:45:04.723 回答