es probable que desee algo como esto (suponiendo que la moneda es un flotador):
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:currency]];
Desde sus requerimientos para tratar 52 como 0,52 es posible que tenga que dividir por 100,0.
Lo bueno de este enfoque es que respetará la configuración regional actual. Entonces, cuando corresponda, formateará su ejemplo como "5.212,42".
Actualización: Fui, tal vez, un poco rápido al publicar mi ejemplo. Como señala Conrad Shultz a continuación, cuando se trata de montos de moneda, sería preferible almacenar las cantidades como NSDecimalNumber
s. Esto reducirá en gran medida los dolores de cabeza con errores de redondeo. Si lo hace el fragmento de código anterior se convierte en (moneda suponiendo que es un NSDecimalNumber*
):
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSString *numberAsString = [numberFormatter stringFromNumber:currency];
¡Nunca use flotadores para valores exactos (especialmente moneda)! Use NSDecimalNumber/NSDecimal. –
¡Impresionante!Lo tenía funcionando, pero estaba luchando con el doble decimal. Era tan obvio que me lo perdí. ¡Gracias! –
¡De nada! – idz