如何更改iOS的小数位数?

时间:2011-09-23 15:03:15

标签: ios xcode calculator

我有一个简单的计算器应用程序,我希望它是如此,如果答案不需要小数位,没有,只有整数。如果答案是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;

}

5 个答案:

答案 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的所需属性。