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>>错误的解决方案
EXC_BAD_ACCESS NSArray of ManagedObjects(核心数据)