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.90000000000001ではなく80.90として番号を取得できますか

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 に答える