setMaximumFractionDigits的问题

时间:2012-05-13 09:40:52

标签: ios objective-c nsnumberformatter fractions

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

2 个答案:

答案 0 :(得分:13)

setMaximumFractionDigitssetMinimumFractionDigits用于格式化数字。换句话说,在将数字转换为字符串即stringFromNumber时,它会被应用。因此,当您使用numberFromString

时,它将无法应用

答案 1 :(得分:2)

正如@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