ios nsarray sum

ios - Cómo obtener la suma total de moneda de un NSMutableArray



nsarray (2)

Esta pregunta ya tiene una respuesta aquí:

Quiero sumar la moneda de NSMutableArray. Por ejemplo, tengo una matriz A (1,234.56, 2,345.67) y después de sumar elementos en la matriz, quiero que aparezca el resultado: 3,580.23 para ponerlo en la etiqueta. ¿Hay alguna manera de implementar esto?

Gracias


La forma más simple es esta:

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


Si los valores se almacenan como objetos NSNumber , puede usar los operadores de recopilación. Por ejemplo:

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

Si quieres formatear esa sum muy bien usando NSNumberFormatter :

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; formatter.numberStyle = NSNumberFormatterDecimalStyle; NSString *result = [formatter stringFromNumber:sum]; NSLog(@"result = %@", result);

Si sus valores están realmente representados por cadenas, @"1,234.56" , @"2,345.67" , etc., entonces puede querer iterar manualmente a través de la matriz, convirtiéndola en valores numéricos usando NSNumberFormatter , y NSNumberFormatter a medida que avanza:

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);