在UILabel中显示带符号的浮点数

时间:2012-09-17 09:19:10

标签: ios floating-point uilabel sign

我知道有一种“硬”方式可以做到这一点(不是很难,但不是直接)。

我在标签中以百分比形式显示浮点值:

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:是最好的解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

您不需要制作格式的标志部分 - 它可以参数化,如下所示:

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

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

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