带余数的小数点



我需要计算器应用程序的帮助。我使用两个浮点变量,所以当我做一个练习账户时,例如 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

(您可以使用其他属性来控制小数位数等)

最新更新