質問

これは、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]];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top