NSArray 的双打 iOS (Objective c)

NSArray of doubles iOS (Objective c)

在我的数组中我有这个数据,每个值都是双精度类型:

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

而且我需要将所有元素更改为仅带 2 位小数的 NSString 我怎样才能使用优化代码的最佳方法来做到这一点。

例如:

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

.....

在 swift 中,您可以使用 map 语句执行此操作。在 Objective-C 中你必须有一个 NSNumbers 的 NSArray。在 Objective-C 中不可能有像 double 这样的值类型的 NSArray。 ( 可能 - 正常,甚至 - 有一个浮点值的 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.901234), @(9.876543)];
NSArray <NSString *> *strings = mapArrayOfNumbers(numbers);
for (NSString *aString in strings) {
    NSLog(@"Entry = %@", aString);
}