如何从NSMutableArray获得货币总和

时间:2014-04-27 16:06:59

标签: ios nsarray sum

我想要来自NSMutableArray的货币总和。例如:我有一个数组A(1,234.56,2,345.67)和数组中的和项后,我想要结果显示:3,580.23将它放在标签上。有没有办法实现这个?

由于

2 个答案:

答案 0 :(得分:1)

最简单的方法是:

NSMutableArray *array = [NSMutableArray arrayWithArray:@[@(1234.56), @(2345.67)]];
double sum = [[array valueForKeyPath: @"@sum.self"] doubleValue];

答案 1 :(得分:1)

如果值存储为NSNumber个对象,则可以使用集合运算符。例如:

NSArray *array = @[@1234.56, @2345.67];
NSNumber *sum = [array valueForKeyPath:@"@sum.self"];

如果您想使用sum很好地格式化NSNumberFormatter

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *result = [formatter stringFromNumber:sum];

NSLog(@"result = %@", result);

如果您的值确实由字符串@"1,234.56"@"2,345.67"等表示,那么您可能需要手动迭代数组,使用NSNumberFormatter将它们转换为数值,随着你的进展添加它们:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;

NSArray *array = @[@"1,234.56", @"2,345.67"];

double sum = 0.0;

for (NSString *string in array) {
    sum += [[formatter numberFromString:string] doubleValue];
}

NSString *result = [formatter stringFromNumber:@(sum)];

NSLog(@"result = %@", result);