2017-10-19 85 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); 
} 
相关问题