Issues with setMaximumFractionDigits

懵懂的女人 提交于 2019-12-07 10:04:56

问题


setMaximumFractionDigits is not working 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 gets converted to 80.90000000000001. but I have put a limit to 2 decimal places. So, how do I get number as 80.90, instead of 80.90000000000001


回答1:


setMaximumFractionDigits and setMinimumFractionDigits used to formatting a number. or in other words it get applied while converting a number into string i.e. stringFromNumber. So it will not get applied when you are using numberFromString




回答2:


As @SunilPandey mentioned -setMaximumFractionDigits is used for formatting a 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);

Output:

NumberString: 80.99



来源:https://stackoverflow.com/questions/10570756/issues-with-setmaximumfractiondigits

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!