1

这看起来像 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 这里的问题?我应该指定哪个?或者这种奇怪行为还有其他原因吗?

4

1 回答 1

0

添加这个似乎对我有用,虽然我不确定为什么会这样:

[formatter setRoundingIncrement: [NSNumber numberWithFloat: 1]];
于 2009-08-24T14:33:36.783 回答