我需要帮助我的计算器应用程序。我使用两个浮点变量,所以当我做一个运动账户时,例如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];
}
答案 0 :(得分:1)
您可以尝试使用%g
格式规范:
double参数应以f或e格式转换(或者在G转换说明符的情况下以F或E格式转换),精度指定有效位数。如果显式精度为零,则应将其视为1.使用的样式取决于转换的值;只有当这种转换产生的指数小于-4或大于或等于精度时,才应使用样式e(或E)。 应从结果的小数部分删除尾随零;基数字符只有在后跟数字或存在“#”标志时才会出现。
来自Apple使用的IEEE printf specification,强调已添加。
例如:
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
(您可以使用其他属性来控制小数位数等。)