setMaximumFractionDigits的问题

setMaximumFractionDigits不能与下面的代码一起使用。

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

数字转换为80.90000000000001。 但我已经把限制在2位小数。 那么,我怎样才能得到80.90的数字,而不是80.90000000000001

用于格式化数字的setMaximumFractionDigitssetMinimumFractionDigits 。 或者换句话说,它在将一个数字转换成string(即stringFromNumber 。 所以当你使用numberFromString时候它不会被应用

正如@SunilPandey所提到的-setMaximumFractionDigits用于格式化一个数字。 所以你可以这样做:

 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); 

输出:

NumberString: 80.99