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