4

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

4

2 回答 2

13

setMaximumFractionDigitssetMinimumFractionDigits用于格式化数字。或者换句话说,它在将数字转换为字符串时应用,即stringFromNumber。所以在你使用时它不会被应用numberFromString

于 2012-05-13T09:54:38.353 回答
1

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

于 2012-05-13T10:02:50.477 回答