如果有小数部分,CGFloat到NSString只有十进制

时间:2014-06-06 15:19:36

标签: ios objective-c string-formatting

不确定如何正确地标出标题...但我想知道的是,如果有一些聪明的格式说明符,将采用数字4.5并给我@“4.5”,但也取2号并给我@ “2”。

使用%.1f说明符给我@“4.5”但是@“2.0”。我试图摆脱“.0”位。

这样的野兽是否存在,或者我将不得不对此进行一些数学计算? FWIW,我试图迭代一个从0到5的值的数组,以半步增加,所以0,0.5,1,1.5,...,4.5,5

干杯!

2 个答案:

答案 0 :(得分:9)

NSNumberFormatter在这里是个不错的选择。如果数字是整数,您可以将其配置为不显示小数位数。例如:

NSArray *numbers = @[@0, @0.5, @1.0, @1.5, @2.0, @2.5];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.alwaysShowsDecimalSeparator = NO;
numberFormatter.minimumFractionDigits = 0;
numberFormatter.maximumFractionDigits = 1;
numberFormatter.minimumIntegerDigits = 1;
for (NSNumber *number in numbers) {
    NSLog(@"%@", [numberFormatter stringFromNumber:number]);
}

输出:

>> 0
>> 0.5
>> 1
>> 1.5
>> 2
>> 2.5

答案 1 :(得分:0)

这更容易(斯威夫特):

let num1: Double = 5
let num2: Double = 5.52
let numberFormatter = NSNumberFormatter()
numberFormatter.numberStyle = .DecimalStyle
print(numberFormatter.stringFromNumber(NSNumber(double: num1)))
print(numberFormatter.stringFromNumber(NSNumber(double: num2)))

这将打印5然后打印5.52。