NSArray of doubles iOS(目标 c)

Posted

技术标签:

【中文标题】NSArray of doubles iOS(目标 c)【英文标题】:NSArray of doubles iOS (Objective c) 【发布时间】:2017-10-19 15:56:57 【问题描述】:

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

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

并且我需要将所有元素更改为 NSString 仅带 2 个小数,如何使用优化代码的最佳方法来做到这一点。

例如:

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

....

【问题讨论】:

NSNumberFormatter let a = yourArray.map String(($0 * 100).rounded() / 100) 根据您显示为数组的内容,您似乎正在处理 JSON,并且数据是以包含浮点值的字符串数组的形式进入的?您能否编辑您的问题以显示有关数据来源及其格式的更多信息? @AMayes 问题明确指定了Objective-C 【参考方案1】:

您可以使用 map 语句快速完成此操作。在 Objective-C 中,你必须有一个 NSNumber 的 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);

【讨论】:

以上是关于NSArray of doubles iOS(目标 c)的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableView 中显示文件的 NSArray - iOS 5

关于React Native报Cannot initialize a parameter of type ‘NSArray<id<RCTBridgeModule>>错误的解决方案

iOS入门小知识-数组

EXC_BAD_ACCESS NSArray of ManagedObjects(核心数据)

无法使用 double 类型的左值初始化“id _NonNull”类型的参数

Foundation 之 NSArray/NSMutableArrray