4

このことを考慮:

NSString *whatever=[NSString stringWithFormat:@"My float: %.2f",aFloat];

aFloatこれにより、文字列を作成するときに小数点以下2桁に丸められますwhatever

2このステートメントのinを割り当て可能にして、の値に基づいてaFloat小数点以下2桁または4桁を表示できるようにしたいとします。これをどのように組み込むことができstringWithFormatますか?

ifさまざまなケースで行全体を繰り返すだけでなく、どういうわけか部分だけを動的に変更することなく、これを実行できるようにしたいと思います%.2f

4

3 に答える 3

11

適切な答えは、NSNumberFormatterを使用することです。

ただし、フォーマット文字列を使用する簡単な答えは、アスタリスク指定子を使用することです。Appleのドキュメントによると、フォーマット文字列はIEEEprintf仕様に準拠しています。この仕様は次のように述べています。

フィールド幅、精度、またはその両方は、アスタリスク('*')で示される場合があります。この場合、int型の引数は、フィールドの幅または精度を提供します。

この意味は

int precision = 2;
NSString *whatever=[NSString stringWithFormat:@"My float: %.*f", precision,aFloat];
//                                   Asterisk in place of 2^^    ^^^^^^^^^ int variable

動作するはずです。私はそれを試していませんが、NSNumberFormattersを使用する傾向があります。

于 2012-10-29T13:34:44.440 に答える
5

最初にフォーマットを作成する必要があります。

NSInteger precision = 2;
NSString *format = [@"My float: %." stringByAppendingFormat:@"%d", precision];
format = [format stringByAppendingString:@"f"];

NSString *whatever=[NSString stringWithFormat:format, aFloat];
于 2012-10-29T13:08:09.863 に答える
0

フォーマット文字列を作成するためにエスケープ%します。%%

NSUInteger digits = aFloat > 10.0f ? 2 : 4;
NSString *format = [NSString stringWithFormat:@"My float: %%.%if", digits];
NSString *whatever = [NSString stringWithFormat:format, aFloat];
于 2012-10-29T13:08:33.647 に答える