我有一个简单的计算器应用程序,我希望它是如此,如果答案不需要小数位,没有,只有整数。如果答案是2,我不希望它说2.000000,它应该说2.如果它需要一个小数位,它应该显示一个小数位,例如12.8而不是12.80。我该怎么做?这是我的代码。 顺便说一句,这是来自http://www.youtube.com/watch?v=Ihw0cfNOrr4的教程,而不是我自己的工作。
viewcontroller.h
#import <UIKit/UIKit.h>
interface calcViewController : UIViewController {
float result;
IBOutlet UILabel *calculatorScreen;
int currentOperation;
float currentNumber;
}
-(IBAction)buttonDigitPressed:(id)sender;
-(IBAction)buttonOperationPressed:(id)sender;
-(IBAction)cancelInput;
-(IBAction)cancelOperation;
@end
<。> <。>
#import "calcViewController.h"
@implementation calcViewController
-(IBAction)buttonDigitPressed:(id)sender {
currentNumber = currentNumber *10 + (float)[sender tag];
calculatorScreen.text = [NSString stringWithFormat:@"%2f", currentNumber];
}
-(IBAction)buttonOperationPressed:(id)sender {
if (currentOperation ==0) result = currentNumber;
else {
switch (currentOperation) {
case 1:
result = result + currentNumber;
break;
case 2:
result = result - currentNumber;
break;
case 3:
result = result * currentNumber;
break;
case 4:
result = result / currentNumber;
break;
case 5:
currentOperation = 0;
break;
}
}
currentNumber = 0;
calculatorScreen.text = [NSString stringWithFormat:@"%2f", result];
if ([sender tag] ==0) result=0;
currentOperation = [sender tag];
}
-(IBAction)cancelInput {
currentNumber =0;
calculatorScreen.text = @"0";
}
-(IBAction)cancelOperation {
currentNumber = 0;
calculatorScreen.text = @"0";
currentOperation = 0;
}
答案 0 :(得分:7)
一种方法是使用NSNumberFormatter格式化结果而不是NSString的-stringWithFormat:
:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:requiredDigits];
[formatter setMinimumFractionDigits:0];
NSString *result = [formatter stringFromNumber:[NSNumber numberWithFloat:currentNumber];
答案 1 :(得分:2)
最简单的方法是使用 [[NSNumber numberWithFloat:] stringValue]
示例:
float someFloatValue;
NSString floatWithoutZeroes = [[NSNumber numberWithFloat:someFloatValue] stringValue];
答案 2 :(得分:2)
如果我们使用%g
代替%f
将截断小数点后的所有零。
[NSString stringWithFormat:@"%g", 1.201000];
1.201
答案 3 :(得分:1)
这应该有效
NSString *result = [@(currentNumber) description];
答案 4 :(得分:1)
我遇到了同样的问题。这是解决它的代码片段(看起来很像Caleb的解决方案,但那个对我不起作用,所以我不得不添加额外的一行):
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.numberStyle = kCFNumberFormatterDecimalStyle;
numberFormatter.maximumFractionDigits = 20;
numberFormatter.minimumFractionDigits = 0;
NSNumber *number = [[NSNumber alloc]init];
NSString *numberString = [numberFormatter stringFromNumber:number];
我们可以使用另一个numberStyle并覆盖它的基本外观,设置NSNumberFormatter的所需属性。