繁体   English   中英

我应该担心这个DateTime数学会失去精度吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM