Подтвердить что ты не робот

Предотвращение десятичных знаков с помощью NSNumberFormatter

У меня есть 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
4b9b3361

Ответ 1

Я думаю, вы хотите вызвать 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 %@", 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 £12

Ответ 2

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

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

или

Получите intValue из NSNumber, как предложено @Praveen

Ответ 4

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

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

Ответ 5

Swift 4

    let formatter = NumberFormatter()
    formatter.maximumFractionDigits = 0

Ответ 6

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

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

удача