2012-07-27 20 views
0

我需要能夠計算兩個日期之間的時間差,然後將該值存儲爲一個數字精度十進制格式。所以如果時差是6分鐘,我需要返回.1,如果是3分鐘,我仍然需要.1返回,但如果是7分鐘或12分鐘,我需要返回0.2。時間差的減法工作正常:使用NSNumberFormatter以十進制獲取時間值並四捨五入

NSTimeInterval interval = [currentFlight.landtime timeIntervalSinceDate:currentFlight.takeofftime]; 

返回想象中那麼如果差6(分鐘),我回來值爲0.100000。

我還需要在UILabel中將此值顯示給用戶。當我使用這個號碼格式,0.100000被顯示爲0.2,而不是1.1:

NSNumberFormatter *ftDecimalFormatter = [[NSNumberFormatter alloc] init]; 
[ftDecimalFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[ftDecimalFormatter setMaximumFractionDigits:1]; 
[ftDecimalFormatter setMinimumFractionDigits:1]; 
[ftDecimalFormatter setRoundingMode:NSNumberFormatterRoundUp]; 

我已經嘗試了所有的差異四捨五入方法,但似乎沒有工作。有什麼建議麼?

回答

0

將數字乘以10,加上0.9999999999999,截斷小數部分(即floor),然後除以10. [您可以通過其他方式實現相同的結果,這只是一種方式。]然後,您可以打印您的號碼用格式字符串指定一個十進制數字,不是?

+0

我會加0.5,這可以用double保證表示,並且不會舍入到錯誤的數字。還有'round'函數(對於負數可以正常工作)。 – 2012-07-27 20:45:52

+0

他想輪到最近的第10位,所以我認爲我是正確的,但後來我沒有測試這項技術。無論如何,他應該能夠使用這種類型的技術,而不是格式化程序。 – 2012-07-27 20:50:23