Предотвращение десятичных знаков с помощью NSNumberFormatter - PullRequest
16 голосов
/ 25 июля 2011

У меня есть NSNumberFormatter, который я пытаюсь использовать для генерации целого числа GBP (£) из NSNumber. Я продолжаю получать два знака после запятой, независимо от того, какое заклинание я пробую. Мой код:

    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 ]

40 голосов
/ 25 июля 2011

Я думаю, что вы хотите вызвать setMaximumFractionDigits с нуля.

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
9 голосов
/ 25 июля 2011

Вы можете попробовать следующее

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

или

Получить intValue из NSNumber в соответствии с предложением @ Praveen

3 голосов
/ 25 июля 2011

Вам нужно извлечь intValue из NSNumber .

0 голосов
/ 12 января 2012

формат строки до двух десятичных знаков ... (это то, что я искал) адаптировано ...

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

удачи

0 голосов
/ 25 июля 2011

Вы можете удалить все NSNumberFormatter (что довольно интенсивно) и просто сделать:

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