我需要计算器应用程序的帮助。我使用两个浮点变量,所以当我做一个练习账户时,例如 6/2,结果是 3.000000(带小数点)而不是 3,因为它是一个浮点变量。但是,如果我做2/6结果是0.33333,我该如何解决仅在有余数时才显示小数点的问题。
代码如下:
//Add the number to UILabel
-(IBAction)numberPressed:(UIButton *)sender {
NSString *number = sender.currentTitle;
if (self.typingNumber) {
self.firstLabel.text = [self.firstLabel.text stringByAppendingString:number];
}
else {
self.firstLabel.text = number;
self.typingNumber = YES;
}
}
//Equal method
-(IBAction)equalPress:(id)sender {
self.typingNumber = NO;
self.secondNum = [self.firstLabel.text floatValue];
result = 0;
if ([self.operation isEqualToString:@"+"]) {
result = self.firstNum + self.secondNum;
}
if ([self.operation isEqualToString:@"-"]) {
result = self.firstNum - self.secondNum;
}
if ([self.operation isEqualToString:@"X"]) {
result = self.firstNum * self.secondNum;
}
if ([self.operation isEqualToString:@"/"]) {
result = self.firstNum / self.secondNum;
}
self.firstLabel.text = [NSString stringWithFormat:@"%f" ,result];
}
您可以尝试使用 %g
格式规范:
双精度参数应以样式 f 或 e 转换(如果是 G 转换说明符,则转换为样式 F 或 E),精度指定有效位数。如果显式精度为零,则应将其视为 1。使用的样式取决于转换的值;样式 e(或 E)仅在由此类转换产生的指数小于 -4 或大于或等于精度时才应使用。尾随零应从结果的小数部分删除;基数字符只有在后跟数字或存在"#"标志时才会出现。
来自苹果使用的IEEE printf规范,强调添加。
例如:
float a = 6.0 / 2.0;
float b = 2.0 / 6.0;
NSLog(@"%f, %g | %f, %g", a, a, b, b);
生产:
3.000000, 3 | 0.333333, 0.333333
要获得更多控制,请使用 NSNumberFormatter
类,特别是查看 alwaysShowsDecimalSeparator
等属性。
例如:
NSNumberFormatter *formatter = [NSNumberFormatter new];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
formatter.alwaysShowsDecimalSeparator = NO;
NSLog(@"%@ | %@", [formatter stringFromNumber:@(a)], [formatter stringFromNumber:@(b)]);
生产:
3 | 0.333
(您可以使用其他属性来控制小数位数等)