0

私は小さな iPhone 電卓を作成しており、通常の操作を行っていますが、唯一の問題は、数字が小数点とその後に 6 つのゼロで表示されることです。タグ5のボタンを押すと、これが表示ラベルに表示されます

---------------
|     5.000000|
---------------

ゼロのない数字の 5 を見たのは 1 人だけです。助言がありますか?

これは、表示ラベルに押された数字を表示するコードです。

- (IBAction)digitAction:(id)sender {
    currentNumber = currentNumber *10 + (double)[sender tag];
    display.text = [NSString stringWithFormat:@"%2f",currentNumber];
}

文字列をフォーマットするために次の方法を試しましたが、うまくいかないようです:

代わりに:@"%2f"私は試しまし@"%f"@"%d"など

4

4 に答える 4

1

整数に変換してください!

display.text = [NSString stringWithFormat:@"%d",[[NSNumber numberWithFloat:currentNumber] intValue]];

多田!

ただし、最初から整数を使用する方が効率的です。

int currentNumber = 5;
display.text = [NSString stringWithFormat:@"%d", currentNumber];

しかし、これはあなたがすることを可能にしませんfloat division; これがコードの必須要素である場合は、最初のオプションを使用してください。

于 2013-02-13T16:54:03.463 に答える
1

もっとsmtが必要だと思います、それは条件付きです:

- (IBAction)digitAction:(id)sender {
    currentNumber = currentNumber *10 + (double)[sender tag];
    double integral, fraction;
    fraction = modf(currentNumber, &integral); //This calculates the fractional part of double value
    NSString *formatString = fraction == 0.0 ? @"%.0f" : @".3f"; // Set format string according whether you have fraction or not
    display.text = [NSString stringWithFormat:formatString,currentNumber];
}
于 2013-02-13T18:16:12.547 に答える
1
//  Change "%2f" to "%.0f"

- (IBAction)digitAction:(id)sender {
    currentNumber = currentNumber * 10 + (double)[sender tag];
    display.text = [NSString stringWithFormat:@"%.0f", currentNumber];
 }
于 2013-02-13T17:31:59.667 に答える
0

stringValueラベルを設定したり、printfスタイルのソリューションに煩わされたりしないでください。を使用してNSNumberFormatterください。これにより、数値の表示方法をより細かく制御できます。

于 2013-02-13T16:54:16.603 に答える