Problems with setMaximumFractionDigits

setMaximumFractionDigits does not work with the following code.

NSString *input=@"80.90";
NSNumberFormatter *numberFormatter=[[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
NSNumber *number=[numberFormatter numberFromString:input];
Number

converts to 80.90000000000001. but I set the limit to 2 decimal places. So, how do I get a number like 80.90 instead of 80.90000000000001

+3
source share
2 answers

setMaximumFractionDigitsand is setMinimumFractionDigitsused to format the number. or, in other words, it is used when converting a number to a string ie stringFromNumber. Therefore, it will not apply if you usenumberFromString

+11
source

Since @SunilPandey is mentioned -setMaximumFractionDigits, it is used to format the number. So you can do it like this:

float input = 80.99999;
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setRoundingMode: NSNumberFormatterRoundDown];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];

NSString *numberString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:input]];
[formatter release];

NSLog(@"NumberString: %@", numberString);

Conclusion:

NumberString: 80.99

+2
source

All Articles