2017-10-19 84 views
0

在我的陣列我有這個數據,每個值是double類型:的NSArray(目標C)

(
    "28.04234", 
    "29.3234", 
    "25.03324", 
    "9.390000000000001", 
) 

,我需要改變NSString的所有元素只有2位小數我怎麼能做到這一點用最佳方法優化代碼。

例如:

myArray[0] = "28.04" 
myArray[1] = "29.32" 

....

+1

'NSNumberFormatter' – luk2302

+0

'讓A = {yourArray.map字符串 (($ 0 * 100).rounded()/ 100) }' – AMayes

+0

基於什麼你顯示爲你的數組,它看起來像你正在處理JSON,並且數據作爲包含浮點值的字符串數組進入?你能編輯你的問題來顯示更多關於數據源和它的格式的信息嗎? –

回答

3

在SWIFT你可以用地圖語句做到這一點。在Objective-C中,你必須有NSNray的NSArray。在Objective-C中不可能有一個類型爲的double類型的值。 (這是可能 - 正常的,甚至是 - 有浮點值的C數組,但我不認爲這是你在說什麼。)

嘗試這樣的代碼:

NSArray <NSString *>*mapArrayOfNumbers(NSArray <NSNumber *> *sourceArray) { 
    NSMutableArray *result = [NSMutableArray arrayWithCapacity: sourceArray.count]; 
    for (NSNumber *aNumber in sourceArray) { 
     [result addObject:[NSString stringWithFormat: @"%.02f", aNumber.doubleValue]]; 
    } 
    return result; 
} 

而且你可以這樣調用它:

NSArray <NSNumber *> *numbers = @[@(1.1), @(2.2), @(3.4567), @(8.9), @(9.876543)]; 
NSArray <NSString *> *strings = mapArrayOfNumbers(numbers); 
for (NSString *aString in strings) { 
    NSLog(@"Entry = %@", aString); 
} 
相關問題