如何更改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的所需属性。