格式化标签中显示的字符串

时间:2013-02-13 16:52:03

标签: iphone objective-c c xcode xcode4

我正在创建一个小型iPhone计算器,我已经完成了常规操作,但我唯一的问题是我的数字显示小数点后面有六个零。因此,当我按下带有标签5的按钮时,它将显示在显示标签上

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

我只有一个人看到没有零的5号。有什么建议吗?

这是我显示的代码,用于显示在显示标签上按下的数字:

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

我已经尝试了以下方法来格式化字符串,但它似乎不起作用:

而不是:@"%2f"我尝试了@"%f"@"%d"等。

4 个答案:

答案 0 :(得分:1)

将其转换为整数!

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

多田!

尽管从头开始使用整数会更有效:

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

但是,这不允许你做float division;如果这是代码的必需元素,请使用第一个选项。

答案 1 :(得分:1)

//  Change "%2f" to "%.0f"

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

答案 2 :(得分: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];
}

答案 3 :(得分:0)

不要设置标签的stringValue或打扰printf式解决方案,请使用NSNumberFormatter。它可以让您更好地控制数字的显示方式。