为什么我的NSNumberFormatter目标打印“2”为输入1.0吗?
-
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