簡體   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