3

我知道有一种“硬”的方法可以做到这一点(不是那么难,但不是直截了当)。

我以这种方式在标签中将浮点值显示为百分比:

myLabel.text = [NSString stringWithFormat:@"%.1f%%", myFloat];

我想强制标签显示浮动的标志。当然,如果值为负,它会自动显示“-”。我知道我可以使用这种类型的方法来做到这一点:

-(NSString *) stringFromFloat: (float) theFloat {

    if (theFloat > 0) return [NSString stringWithFormat: @"+%.1f%%", theFloat];
    else return [NSString stringWithFormat: @"%.1f%%", theFloat];
}

但这意味着[self stringFromFloat:aFloat];每次我需要显示浮点值时都会调用。我知道使用此解决方案“更好”,因为它减少了重复使用的行数,但如果我的标签不都显示相同的小数位数,则stringFromFloat:可能会快速增长......

所以我的问题是:是否有一种“简单”和标准的方式来做到这一点?像 NSString 格式化程序之类的?例如,用@"%.1f%%"类似的东西替换@"%sign%.1f%%"

如果没有什么是直截了当的,那是stringFromFloat:最好的解决方案吗?

谢谢 !

4

1 回答 1

4

您不需要将符号作为格式的一部分 - 它可以参数化,如下所示:

myLabel.text = [NSString stringWithFormat:@"%@%.1f%%", myFloat<0 ? @"" : @"+", myFloat];

即使您想将其放入格式中,也可以在表达式中准备格式字符串:

myLabel.text = [NSString stringWithFormat:myFloat<0 ? @"%.1f%%" : @"+%.1f%%", myFloat];
于 2012-09-17T09:27:04.997 回答