2

有効桁数を使用してフォーマットするように NSNumberFormatter を設定したので、値を正しく表示するために必要な数の 10 進数のみを表示する必要があります。

フォーマット7.0に使用すると、期待どおりに動作し、生成しますが、フォーマット@"7"に使用すると0.0、フォーマッタは期待どおりに生成しませ@"0.0"@"0"

NSNumberFormatter *doubleValF = [[NSNumberFormatter alloc] init];
[doubleValF setNumberStyle:NSNumberFormatterDecimalStyle];
[doubleValF setRoundingMode:NSNumberFormatterRoundHalfUp];

doubleValF.maximumFractionDigits = 9;
doubleValF.minimumFractionDigits = 0;
doubleValF.minimumSignificantDigits = 0;
doubleValF.maximumSignificantDigits = 30;
[doubleValF setUsesSignificantDigits:YES];

double value1 = 0.0;
NSString *value1String = [doubleValF stringFromNumber:[NSNumber numberWithDouble:value1]];

double value2 = 7.0;
NSString *value2String = [doubleValF stringFromNumber:[NSNumber numberWithDouble:value2]];

NSLog(@"value1=%@", value1String);
NSLog(@"value2=%@", value2String);

このコードを実行すると、次の出力が得られます。

2012-12-15 15:57:03.425 StackOverflowTests[41701:11303] value1=0.0
2012-12-15 15:57:03.426 StackOverflowTests[41701:11303] value2=7
4

3 に答える 3

0

数値フォーマッタの zeroSymbol プロパティを @"0" に設定してみてください。

doubleValF.zeroSymbol = @"0"; 
于 2015-04-13T12:55:40.813 に答える
0

この問題は、 に設定usesSignificantDigitsしたことに関連していますYES。の末尾の数字0.0は重要であると考えられます。

ここに関連する問題についての良い議論があります: https://stackoverflow.com/a/13110633/1435955

于 2012-12-16T01:16:10.967 に答える