我正在创建一个小型iPhone计算器,我已经完成了常规操作,但我唯一的问题是我的数字显示小数点后面有六个零。因此,当我按下带有标签5的按钮时,它将显示在显示标签上
---------------
| 5.000000|
---------------
我只有一个人看到没有零的5号。有什么建议吗?
这是我显示的代码,用于显示在显示标签上按下的数字:
- (IBAction)digitAction:(id)sender {
currentNumber = currentNumber *10 + (double)[sender tag];
display.text = [NSString stringWithFormat:@"%2f",currentNumber];
}
我已经尝试了以下方法来格式化字符串,但它似乎不起作用:
而不是:@"%2f"
我尝试了@"%f"
,@"%d"
等。
答案 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
。它可以让您更好地控制数字的显示方式。