2012-03-26 9 views
1

私は様々なタイプの数値を保持するクラスを持っています。このクラスの中には、アプリケーション内に表示するための記述子テキストを出力するために使用される2つのヘルパーメソッドがあります。固定幅浮動小数点数のための動的書式文字列を作成します

この記述子テキストは、特定のインスタンスの定義に応じて常に整数または浮動小数点として表示されます。

クラスには、表示する小数の数を決定するために使用するDecimalWidthというプロパティがあります。数値を表示するコード行を書くのは助けが必要ですが、小数点以下は固定されています(0が可能ですが、そのような場合は整数で表示する必要があります)。

私は認識しています​​のような値を返すことができますが、私の問題はフォーマット文字列の '2'をDecimalWidthの値に置き換える必要があることです。

この問題を解決するには、いくつかの方法が考えられます。私は一緒に文字列を連結することができ、それは出力された文字列行のためのフォーマット文字列としてです。あるいは、フォーマット文字列内でフォーマット文字列を作ることができます。

これらのソリューションは非常に厄介であり、むしろ非効率的なように見えますが、これが私の持つ最良のオプションです。

出力が固定小数点の幅番号ですが、指定された小数点の幅が動的な動的な書式設定文字列をうまく構築する方法はありますか?

+2

[printfスタイルの書式設定機能の内部変数補間(の可能重複http://stackoverflow.com/questions/8761527/variable- printf-style-formatting-functions内補間) –

答えて

2

しかし、問題の解決策の1つは、@ lulius caesarによって提案された疑問です。 でも良い方法の1つはNSNumberFormatterです。以下は、固定小数点数の10進値を生成するために使用できるサンプルコードである

NSNumberFormatter *numberFormatter=[[NSNumberFormatter alloc] init]; 
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
    [numberFormatter setMinimumFractionDigits:DecimalWidth]; 
    [numberFormatter setMaximumFractionDigits:DecimalWidth]; 
    NSString * decimalString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:self.value]]] 
5

それは私には無効なまたはとは聞こえません。実際に

[NSString stringWithFormat:[NSString stringWithFormat:@"%%.%df", DecimalWidth], self.Value] 

私はそれがむしろエレガントだと思います。

関連する問題