这看起来像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