2009-05-21 30 views
1

所以我試着用數字幾件事情Objective C的實現有一個選項過多,而我只是感到困惑,以使用哪種類型的我應用程序。如何使用不同的號碼類型的目標C

所以這裏的類型。

  • 的NSNumber(這是一類)
  • NSDecmial(這是一個結構)
  • NSDecimalNumber(這是一類)
  • 浮動/雙(其是原始類型)

所以基本上我需要做的是採取一個NSString,它代表十進制小時。 (10.4將是10小時,(4/10)* 60分鐘),並把它轉換成:

  1. 字符串表示DH:M(這需要除法,乘法和基本arithmatic)
  2. 一個號碼類型以商店,方便計算後

哦(將主要NSTimeIntervals和做減法之間進行轉換),我需要能夠做一個絕對的價值,以及對這些

看來,最困難的部分實際上是在類型之間轉換。

對我來說這是一個很瑣碎的問題,所以我「不能確定如果天色已晚,或者因爲Objective C的數值類型鬧心,但我可以用一隻手。

回答

5

使用基本類型(雙,CGFloat的,NSInteger的)爲典型的算法,當你需要存儲數量,那將主要用於在其他地方算術實例變量。您可以使用C數學函數(ABS(),POW()等),根據需要,NSTimeInterval是一個用於double的typedef,所以你可以互換這兩個:

當你需要存儲一個數字作爲一個對象時,例如,如果你正在創建一個NSArray的數字,可以使用NSNumber。價值編碼dea更多的NSNumber比基本類型,所以你可能會發現你自己在這些情況下使用NSNumber更平常。例如,如果你寫[timeKeepersArray valueForKeyPath:@"sum.seconds"]你會得到一個NSNumber,所以你可能會發現很容易,只是爲了保持,而不是將其轉換爲原始變量。

由於這是額外的代碼少量的NSNumber和原始類型之間進行轉換,通常是你的應用程序最終會偏袒一方或另一方取決於你用數字做什麼。

哦,NSDecmial和NSDecimalNumber?不要太擔心它們,只有當你需要真正精確的小數運算時纔會出現,比如如果你正在存儲財務數據。

相關問題