2012-01-06 9 views
7

Objective-C(またはC)のprintf形式の文字列書式関数で、浮動小数点精度の変数に変数を渡す方法はありますか?たとえば、TCLやその他のスクリプト言語では、次のようなことができます。printf形式の書式化関数内の可変補間

set precision 2 
puts [format "%${precision}f" 3.14159] 

出力はもちろん、3.14になります。私は、Objective-Cで似た何かをしたいと思います:

float precision = 2 
NSString *myString = [NSString stringWithFormat:@".2f", 3.14159] 

私は、変数としての精度を含めたいことを除いて。これはどうすればできますか?

+0

あなたは二回stringWithFormatを使用することができます:一度フォーマットを組み立てるために2回目に作成した書式を値に適用します。 –

答えて

6

はい、書式設定のためのCocoaで使用されているprintfためstring format specifiersは、可変精度指定子を含め、*が置かれ、小数点以下:

int precision = 3; 
NSLog(@"%.*f", precision, 3.14159); 
NSString *myString = [NSString stringWithFormat:@".*f", precision, 3.14159]; 
+0

パーフェクト。これはまさに私が探していたものです。 – Ampers4nd

1

あなたはこのように、可変のあなたのフォーマット文字列を作り、その後、stringWithFormatにあることを渡すことによってそれを行うことができます。

float precision = 2; 
NSString* formatString = [NSString stringWithFormat:@"%%.%df", precision]; 
NSString* myString = [NSString stringWithFormat:formatString, 3.14159]; 

フォーマット文字列あなたが続く「%」記号たいと言う「を。」次に変数 "precision"に格納された値の後に "f"が続きます。

関連する問題