【发布时间】:2012-06-25 15:37:35
【问题描述】:
我有一个大的NSArray 包含NSNumbers 像3, 4, 20, 10, 1, 100, 等等...
如何将所有这些 NSNumbers (3 + 4 + 20 + 10 + 1 + 100 + etc...) 的总和作为一个总数 NSInteger?
谢谢!
【问题讨论】:
标签: iphone objective-c nsarray nsnumber nsinteger
我有一个大的NSArray 包含NSNumbers 像3, 4, 20, 10, 1, 100, 等等...
如何将所有这些 NSNumbers (3 + 4 + 20 + 10 + 1 + 100 + etc...) 的总和作为一个总数 NSInteger?
谢谢!
【问题讨论】:
标签: iphone objective-c nsarray nsnumber nsinteger
你可以用这个:
NSArray* numbers = //array of numbers
NSNumber* sum = [numbers valueForKeyPath: @"@sum.self"];
【讨论】:
doubles 进行所有算术运算。因此,五年后,随着 64 位运行时和 NSInteger 现在的大小与 double 相同,当数字很大时可能会丢失精度。
@sum.self 吗?
NSInteger sum = 0;
for (NSNumber *num in myArray) {
sum += [num intValue];
}
【讨论】:
long long sum = ((NSNumber*)[array valueForKeyPath: @"@sum.longLongValue"]).longLongValue;
【讨论】:
valueForKeyPath: 返回一个对象,而不是一个整数。
遍历数组
int count = [array count];
NSInteger sum = 0;
for (int i = 0; i < count; i++) {
sum += [[array objectAtIndex:i] integerValue];
}
【讨论】:
[[numbersArray valueForKeyPath:@"@sum.self"] integerValue]
【讨论】:
int total = 0;
for (NSNumber *number in array)
{
total += [number intValue];
}
希望对你有帮助
【讨论】: