2011-07-25 8 views
13

Mam NSNumberFormatter, którego próbuję użyć do wygenerowania całej liczby GBP (£) z NSNumber. Dostaję dwa miejsca po przecinku, niezależnie od tego, którą próbuję zaklęć. Mój kod to:Zapobieganie ułamkom dziesiętnym za pomocą 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

myślę coraz intValue usunie część dziesiętna – sujith1406

Odpowiedz

35

Myślę, że chcesz wywołać setMaximumFractionDigits z zero.

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

Można spróbować następujących

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

lub

Get intValue z NSNumber jak sugeruje @Praveen

+1

Dzięki, ustawiając minimumFractionDigits i maximumFractionDigits do zera Dostałem to, czego potrzebowałem. – Echilon

0

Można usunąć wszystkie NSNumberFormatter (co jest dość intensywny) i po prostu wykonaj:

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

ciąg do dwóch miejsc po przecinku ... (właśnie szukałem) przystosowane ...

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

powodzenia

Powiązane problemy