2012-04-11 45 views

Respuesta

44

Lo hice no hace mucho tiempo. Aquí está el código:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setGroupingSeparator:@","]; 
[numberFormatter setGroupingSize:3]; 
[numberFormatter setUsesGroupingSeparator:YES]; 
[numberFormatter setDecimalSeparator:@"."]; 
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[numberFormatter setMaximumFractionDigits:2]; 
NSString *theString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:1008977.72]]; 

creo que sirve


EDITAR

Como Olie preguntó Voy a publicar un código que va a utilizar la configuración regional actual para configurar la agrupación/decimal separadores en sí.

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setLocale:[NSLocale currentLocale]]; 
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[numberFormatter setMaximumFractionDigits:2]; 
NSString *theString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:1008977.72]]; 
NSLog(@"The string: %@", theString); 

Usando [NSLocale localeWithLocaleIdentifier:] en lugar de [NSLocale currentLocale] me dio los siguientes resultados:

[NSLocale localeWithLocaleIdentifier:@"be_NL"] 
The string: 1 008 977,72 
[NSLocale localeWithLocaleIdentifier:@"en_GB"] 
The string: 1,008,977.72 
[NSLocale localeWithLocaleIdentifier:@"DE"] 
The string: 1.008.977,72 
[NSLocale localeWithLocaleIdentifier:@"en_US"] 
The string: 1,008,977.72 
+2

Eso es bastante bueno, pero voy a voto su respuesta si edita para mostrar cómo obtener el separador de agrupación para el local (* ie *, USA usa "," mientras que la mayoría de Europa usa "." como el separador de mil, y viceversa para el separador decimal.) – Olie

+1

@Olie Espero haberlo hecho bien. No toqué ningún Objective-C desde hace bastante tiempo :-) – Novarg

+0

¡Terrific, gracias! – Olie

0

Sólo traducida en Swift:

let formatter = NumberFormatter() 
    formatter.groupingSeparator = "," 
    formatter.groupingSize = 3 
    formatter.usesGroupingSeparator = true 
    formatter.decimalSeparator = "." 
    formatter.numberStyle = .decimal 
    formatter.maximumFractionDigits = 2 
    formatter.minimumFractionDigits = 2 
    formatter.minimumIntegerDigits = 1 
    let result = formatter.string(from: NSNumber(value: value)) ?? "0.00" 
Cuestiones relacionadas