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];しかし、それはfloat 値を表示する必要があるたびに呼び出すことを意味します。このソリューションを使用すると、再利用される行の数が減るため、「より良い」ことはわかっていますが、ラベルがすべて同じ小数点以下の桁数を表示しない場合、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 に答える