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