2011-07-25 20 views
13

Tengo un NSNumberFormatter que intento usar para generar un número entero de GBP (£) desde un NSNumber. Sigo recibiendo dos decimales, independientemente de qué conjuro intente. Mi código es:Prevención de decimales con NSNumberFormatter

NSNumberFormatter *fmtCurrency = [[[NSNumberFormatter alloc] init] autorelease]; 
    [fmtCurrency setNumberStyle: NSNumberFormatterCurrencyStyle]; 
    [fmtCurrency setGeneratesDecimalNumbers:FALSE]; 
    [fmtCurrency setCurrencyCode:@"GBP"]; 
    [fmtCurrency setCurrencySymbol:@"£"]; 
    txtTotal.text = [fmtCurrency stringFromNumber: result.Bill ]; // this is an NSNumber 
+5

creo que conseguir el intValue eliminará la parte decimal – sujith1406

Respuesta

35

Creo que desea llamar a setMaximumFractionDigits con cero.

NSNumberFormatter *fmtCurrency = [[[NSNumberFormatter alloc] init] autorelease]; 
[fmtCurrency setNumberStyle: NSNumberFormatterCurrencyStyle]; 
[fmtCurrency setGeneratesDecimalNumbers:NO]; 
[fmtCurrency setCurrencyCode:@"GBP"]; 
[fmtCurrency setCurrencySymbol:@"£"]; 

NSNumber* myNumber = [NSNumber numberWithFloat:12.34]; 
NSString* myString = [fmtCurrency stringFromNumber:myNumber]; 
NSLog(@"the number is %@", myString); 

[fmtCurrency setMaximumFractionDigits:0]; 
myString = [fmtCurrency stringFromNumber:myNumber]; 
NSLog(@"now it's %@", myString); 


2011-07-25 01:05:39.823 FormatterTest[841:707] the number is £12.34 
2011-07-25 01:05:39.824 FormatterTest[841:707] now it's £12 
8

Puede intentar lo siguiente

[fmtCurrency setGeneratesDecimalNumbers:NO]; 
[fmtCurrency setMaximumFractionDigits:0]; 

o

Obtener intValue del NSNumber según lo sugerido por @Praveen

+1

Gracias, mediante el establecimiento de minimumFractionDigits y maximumFractionDigits a cero Obtuve lo que necesitaba. – Echilon

0

Se podría eliminar todo el NSNumberFormatter (que es bastante intensivo) y simplemente hazlo:

txtTotal.text = [NSString stringWithFormat:@"£%d", result.Bill.intValue]; 
-2

cadena de formato a dos decimales ... (era lo que estaba buscando) adaptada ...

  float distance = //distance with many decimals...; 

      NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
      [numberFormatter setMaximumFractionDigits:2]; 

      //new distance with two decimals 
      NSNumber* myNumber = [NSNumber numberWithFloat:distance]; 

buena suerte

Cuestiones relacionadas