Iphone 设置标签中显示的字符串的格式
我正在创建一个小型iPhone计算器,我已经完成了通常的操作,但唯一的问题是,我的数字显示时带有一个小数点和六个零。因此,当我按下带有标签5的按钮时,它会显示在显示标签上Iphone 设置标签中显示的字符串的格式,iphone,objective-c,c,xcode,xcode4,Iphone,Objective C,C,Xcode,Xcode4,我正在创建一个小型iPhone计算器,我已经完成了通常的操作,但唯一的问题是,我的数字显示时带有一个小数点和六个零。因此,当我按下带有标签5的按钮时,它会显示在显示标签上 --------------- | 5.000000| --------------- 我只看到一个没有零的数字5。有什么建议吗 这是我的代码,用于显示在显示标签上按下的数字: - (IBAction)digitAction:(id)sender { currentNumber = currentNumber
---------------
| 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了。。。。?你认为通过创建一个对象来为你取整,你会得到什么?如果我没有给我显示一个双精度的除法,我会怎么做?我使用同一行进行除法。对于双精度除法(真正的浮点除法),你需要将结果存储在浮点
或双精度的除法中,然后可以使用我答案的第一部分转换