[英]Should I worry about losing precision with this DateTime math?
这段代码:
if (dt.Subtract(prevDt).TotalMinutes == 15)
(“dt”和“prevDt”是DateTime变量,包含诸如“7/20/2012 7:30:00 AM”和“7/20/2012 7:45:00 AM”之类的值)
......让ReSharper警告我:
“使用相等运算符比较浮点数。在舍入值时可能会损失精度。”
这是一个有效的警告,如果是的话,我该如何安抚它? 我希望ReSharper更像Eclipse,它提供修复它抱怨的东西。
无论如何,代码似乎工作正常,但如果这是一个代码气味,我宁愿不让它发臭。
如果您确定您的时间戳正好在15分钟的边界而不是几毫秒的时间,那么您的代码将正常工作。 可以精确表示为int
值也可以精确地表示为double。
如果您想尝试重写代码以避免警告,您可能想尝试这样做:
if (prevDt.AddMinutes(15) == dt)
不,如果您的日期总是相隔15分钟,则不是有效警告,否则没有秒或毫秒(或滴答)的差异。
您可以将Minutes与所有其他属性(Days / Hours ...)一起使用来比较您关注的部分的TimeSpans(即忽略秒数)。
否则,如果您的值可能包含秒/毫秒,则最好检查TotalMinutes是否不太远而不是完全匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.