Iphone 设置标签中显示的字符串的格式

Iphone 设置标签中显示的字符串的格式,iphone,objective-c,c,xcode,xcode4,Iphone,Objective C,C,Xcode,Xcode4,我正在创建一个小型iPhone计算器,我已经完成了通常的操作,但唯一的问题是,我的数字显示时带有一个小数点和六个零。因此,当我按下带有标签5的按钮时,它会显示在显示标签上 --------------- | 5.000000| --------------- 我只看到一个没有零的数字5。有什么建议吗 这是我的代码,用于显示在显示标签上按下的数字: - (IBAction)digitAction:(id)sender { currentNumber = currentNumber

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

---------------
|     5.000000|
---------------
我只看到一个没有零的数字5。有什么建议吗

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

- (IBAction)digitAction:(id)sender {
    currentNumber = currentNumber *10 + (double)[sender tag];
    display.text = [NSString stringWithFormat:@"%2f",currentNumber];
}
我尝试了以下方法格式化字符串,但似乎不起作用:


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

将其转换为整数

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

尽管如此,从一开始就使用整数会更有效:

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

但是,这不允许您进行
浮点除法
;如果这是代码的必需元素,请使用第一个选项。

将其转换为整数

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

尽管如此,从一开始就使用整数会更有效:

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

但是,这不允许您进行
浮点除法
;如果这是代码的必需元素,请使用第一个选项。

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

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

我认为你更需要smt,它是有条件的:

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

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

我认为你更需要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];
}

%2f比NSNumberFormatter更容易处理,这不是问题的原因。%2f比NSNumberFormatter更容易处理,也不是问题的原因。(int)currentNumber很好,不需要为此建立NSNumber。。。。?你认为通过创建一个对象来为你取整,你会得到什么?如果我没有给我显示一个双精度的除法,我会怎么做?我使用同一行进行除法。对于双精度除法(真正的浮点除法),你需要将结果存储在
浮点
双精度的除法中,然后可以使用我答案的第一部分(int)currentNumber转换,这样就可以了,不需要为此建立NSNumber了。。。。?你认为通过创建一个对象来为你取整,你会得到什么?如果我没有给我显示一个双精度的除法,我会怎么做?我使用同一行进行除法。对于双精度除法(真正的浮点除法),你需要将结果存储在
浮点
双精度的除法中,然后可以使用我答案的第一部分转换