如何更改iOS的小数位数?

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

一种方法是使用NSNumberFormatter来格式化您的结果,而不是NSString的-stringWithFormat: ::

 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setMaximumFractionDigits:requiredDigits]; [formatter setMinimumFractionDigits:0]; NSString *result = [formatter stringFromNumber:[NSNumber numberWithFloat:currentNumber]; 

最简单的方法就是使用[[NSNumber numberWithFloat:] stringValue]

例:

 float someFloatValue; NSString floatWithoutZeroes = [[NSNumber numberWithFloat:someFloatValue] stringValue]; 

如果我们使用%g代替%f将在小数点后截断所有的零。

例如

 [NSString stringWithFormat:@"%g", 1.201000]; 

产量

 1.201 

这应该工作

 NSString *result = [@(currentNumber) description]; 

我有同样的问题。 这是解决它的代码片段(看起来很像Caleb的解决scheme,但那个不适合我,所以我不得不添加一个额外的行):

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