なぜ入力1.0のための私のNSNumberFormatterオブジェクトの印刷「2」?
-
19-09-2019 - |
質問
これは、APIのバグのように見えます:
私の入力CGFloatが0.0であるとき、私はこれを取得ます:
Input = 0.000000, Output = +0
私の入力CGFloatが1.0であるとき、私はこれを取得ます:
Input = 1.000000, Output = +2
もちろん、それは私が欲しいものではありません; - )
は、今ここで私はNSNumberFormatterオブジェクトことを作成する方法です
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setAlwaysShowsDecimalSeparator:NO];
[formatter setAllowsFloats:YES];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setMinimumFractionDigits:0];
[formatter setPlusSign:@"+"];
[formatter setMinusSign:@"-"];
[formatter setPositivePrefix:@"+"];
[formatter setNegativePrefix:@"-"];
[formatter setRoundingMode:NSNumberFormatterRoundUp];
これは、私はそれが1.0fの私のCGFloatをフォーマットしましょう方法です。
CGFloat myValue = 1.0f;
NSNumber *number = [NSNumber numberWithFloat:myValue];
NSLog(@"Input = %f, Output = %@", myValue, [self.inputValueFormatter stringFromNumber:number]);
は、ここでの問題roundingModeことができますか?私はどちらを指定する必要がありますか?あるいは、この奇妙な行動のための別の原因があるのでしょうか?
解決
私は、なぜそれがないわからないが、これは私のためにトリックを行うようだ追加
[formatter setRoundingIncrement: [NSNumber numberWithFloat: 1]];
所属していません StackOverflow