SoFunction
Updated on 2025-04-06

Introduction and usage of NSNumberFormatter in iOS

Preface

The range of NSDateFormatter in iOS is generally widespread, but NSNumberFormatter is rarely used compared to processing numbers. There are many enum types in NSNumberFormatter, which will save time for actual development.

NSNumberFormatter can be used to handle conversions between NSString and NSNumber, which can satisfy basic digital forms of conversion. I won't say much below, let's take a look at the detailed introduction

1: Format NSNumber to NSString using + localizedStringFromNumber:numberStyle: localization method

Round to integer

 NSNumber *number = @(123423.5563);
 NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterNoStyle];
// 123424

Monetary digital form

 NSNumber *number = @(12342323.5563);
 NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterDecimalStyle];
 // 12,342,323.556 

The form of currency, with localized currency symbols

NSNumber *number = @(12342323.5563);
 NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterCurrencyStyle];
// ¥12,342,323.56

Percent form, and rounded to the integer part of the percentage

NSNumber *number = @(12342323.5563);
NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterPercentStyle];
// 1,234,232,356%

Scientific Counting Form

NSNumber *number = @(12342323.55665); NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterScientificStyle];
// 1.234232355665E7

Localized spelling

NSNumber *number = @(12342323.55665);
NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterSpellOutStyle];
// 342,323,556,65

Ordinal form

NSNumber *number = @(12342323.55665);
NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterOrdinalStyle];
// The1234,2324

Currency Form Shows the currency symbols assigned by ISO

NSNumber *number = @(12342323.55665);
NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterCurrencyISOCodeStyle];
// CNY12,342,323.56

Currency Form

NSNumber *number = @(12342323.55665);
 NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterCurrencyPluralStyle];
// 12,342,323.56RMB

Accounting form

NSNumber *number = @(12342323.55665);
NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterCurrencyAccountingStyle];
// ¥12,342,323.56

2: Initialize the NSNumberFormatter object, use - (NSNumber *)numberFromString:(NSString *)string; custom format NSNumber to NSString

No style is specified (numStyle), the default (NSNumberFormatterNoStyle) is rounded, and the other styles are the same as those described in 1 above.

 NSNumber *number = @(12342323.55665);
 NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
// Specify currency style  = NSNumberFormatterDecimalStyle;
// Custom style [formatter setPositiveFormat:@"###0.###"];
// Separator between numbers [formatter setDecimalSeparator:@":"];
 [formatter setCurrencyDecimalSeparator:@","];
// Prefix symbol  = @"!";
// Suffix symbol  = @"Yuan";
// Symbols added in the gap  = @"?";
// The width of the format  = 15;
// Display at least two decimal places  = 2;
// Display up to three-digit integers  = 5;
 NSString *numStr = [formatter stringFromNumber:number];
// ??????!323:557Yuan

Percent Style Display

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setPositiveFormat:@"0.00%;0.00%;-0.00%"];
NSLog(@"%@", [numberFormatter stringFromNumber:@4.0]);
// Output: "400.00%".

// LocalizationNSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
 
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];[numberFormatter setLocale:usLocale];
NSLog(@"en_US: %@", [numberFormatter stringFromNumber:@4.0]);
// Output: "en_US: 400%".
 
NSLocale *faLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fa_IR"];
[numberFormatter setLocale:faLocale];
NSLog(@"fa_IR: %@", [numberFormatter stringFromNumber:@4.0]);
// Output: "fa_IR: ٪۴۰۰."

Summarize

The above is the entire content of this article. I hope that the content of this article has a certain reference value for everyone's study or work. If you have any questions, you can leave a message to communicate. Thank you for your support.