MaRiriAndMe
MaRiriAndMe

Reputation: 107

NSNumberFormatter setPositiveFormat

I'm trying to use NSNumberFormatter and I would like to use: -setPositiveFormat to customize a format.

I want to transform 121212.12 to 12.12E+04

I have to use 9 digits and 2 decimals

I'm closed to my goal with:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setFormatterBehavior:NSFoundationVersionNumber10_4]; // iOS supports only the modern 10.4+ behavior
[formatter setNumberStyle:NSNumberFormatterScientificStyle];
[formatter setMinimumFractionDigits:numberOfDecimalDigits];
[formatter setPositiveFormat:@"#.#E+00"];
[formatter setFormatWidth:9]; // set width
[formatter setPaddingCharacter:@"x"]; // choice padding Char
NSString *convertNumber = [formatter stringFromNumber:number];
return convertNumber;

But it's not working...

Customize a format like:

[formatter setPositiveFormat:@"#.#E+00]; // my string is from my intuition ....

Is it a solution ?

2nd question : I'm not understanding what # means? Also 00 in the string ? (I can't find answer in Doc)

Thanks !

Upvotes: 2

Views: 3387

Answers (1)

sch
sch

Reputation: 27536

I understand that you want your formatted number to have exactly the following format: (2 digits).(2 digits)E+(2 digits)

You can configure your NSNumberFormatter as follows:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setPositiveFormat:@"00.00E+00"];
NSNumber *number = [NSNumber numberWithFloat:121212.12];
NSString *convertNumber = [formatter stringFromNumber:number];

As for the meaning of 0 and # have a look at this link.

Upvotes: 4

Related Questions