Предотвращение десятичных знаков с помощью 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
Ответы
Ответ 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
Ответ 3
Вам нужно извлечь intValue из NSNumber.
Ответ 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];
удача