3

私の目的は、iPhone 用の顧客計算アプリケーションを作成することであり、Xcode を使用してアプリケーションを作成しています。解決策が見つからないという私の問題は、科学表記法に切り替えることなく、小数を使用する数値を(余分なゼロを使用して)フォーマットする方法です

私は試した...

buttonScreen.text = [NSString stringWithFormat:@"%0.f",currentNumber];

%0.fフォーマットは常に四捨五入されるため、ユーザーが「4.23」と入力すると「4」と表示されます

%f数値を 6 桁でフォーマットします (「5」と入力すると「5.000000」と表示されます) が、数値の末尾に余分なゼロを表示したくありません。

%10.4f解決策を見つけるために私の読書で見た他のものですが、私の問題は、答えに小数点以下がいくつあるかわからないことです。数値によっては、小数点以下0桁または小数点以下10桁が必要になる場合があります。

以下は、表示したい数値の例です (コンマなし): 6 桁を超える整数、6 桁を超える 10 進数。

123,456,789;
0.123456789;
12345.6789;
-123,456,789;
-0.23456789;
-12345.6789;

*これは、以前の質問「科学表記法や小数を使用せずに数値をフォーマットする方法」に対する精神的な再投稿ですが、「不要 (余分なゼロ)」と書くつもりだったので表現が不十分でしたが、投稿を読み直すと、それを伝えることができないことが明らかにわかりました。私の質問のどの時点でも。

4

3 に答える 3

10

NSNumberFormatter クラスを使用します。

最初にフォーマッタを定義します。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

次に、フォーマッタのさまざまなプロパティを定義できます。

formatter.numberStyle = NSNumberFormatterDecimalStyle;
formatter.maximumIntigerDigits = 3;
formatter.minimumFractionDigits = 3;
formatter.maximumFractionDigits = 8;
formatter.usesSignificantDigits = NO;
formatter.usesGroupingSeparator = YES;
formatter.groupingSeparator = @",";
formatter.decimalSeparator = @".";
....

次のように数値を文字列にフォーマットします。

NSString *formattedNumber = [formatter stringFromNumber:num];

それをいじってください。非常に単純ですが、希望する外観を得るには多少の作業が必要になる場合があります。

于 2013-01-23T15:33:58.697 に答える
3

実際には、これを使用する方が理にかなっています。

label.text = [NSString stringWithFormat:@"%.4f", answer];

これは、小数点以下 4 桁で数値を表示するように XCode に指示しますが、数値の前にスペースを「埋め込む」ことはしません。例えば:

1.23 ->  "    1.2300"   //  When using [NSString stringWithFormat:@"%9.4f", answer];
1.23 ->  "1.2300"       //  When using [NSString stringWithFormat:@"%.4f", answer];
于 2014-12-01T10:50:38.747 に答える
1

このようなことを試してください

label.text = [NSString stringWithFormat:@"%9.4f", answer];

ここで、9 は合計桁数 (配置のためのパディングに関して) を意味し、4 は小数点以下 4 桁を意味します。

于 2013-01-23T15:29:01.360 に答える