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);
}
在我的数组中我有这个数据,每个值都是双精度类型:
(
"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);
}