此代码:
if (dt.Subtract(prevDt).TotalMinutes == 15)
(“dt”和“prevDt”是包含诸如“7/20/2012 7:30:00 AM”和“7/20/2012 7:45:00 AM”等值的DateTime变量。
...让ReSharper警告我:
“使用相等运算符比较浮点数。在舍入值时可能会损失精度。”
这是一个有效的警告,如果是,我该如何安抚它?我希望ReSharper更像Eclipse,它可以解决它所抱怨的问题。
无论如何,代码似乎工作正常,但如果这是一个代码味道,我宁愿不让它发臭。
答案 0 :(得分:4)
如果您确定时间戳恰好是15分钟的边界而不是几毫秒的时间,那么您的代码将正常工作。可以精确表示为int
的值也可以精确地表示为double。
如果您想尝试重写代码以避免出现警告,可能需要尝试:
if (prevDt.AddMinutes(15) == dt)
答案 1 :(得分:4)
不,如果您的日期总是相隔15分钟,那么这不是一个有效的警告,否则没有秒或毫秒(或滴答)的差异。
答案 2 :(得分:1)
您可以将Minutes与所有其他属性(天/小时......)一起使用来比较您关注的部分的TimeSpans(即忽略秒数)。
否则,如果您的值可能包含秒/毫秒,则最好检查TotalMinutes是否不太远而不是完全匹配。