我正在通过制作一个简单的技巧计算器来学习Objective-C和iOS开发。但是,我遇到的问题是尝试计算小费时。这是简单的数学运算(小费百分比/总帐单)*100。这正是我在做的事情,但是我对于输出错误的原因感到困惑。

这是我给我问题的ViewController.m文件中的方法

- (IBAction)doCalculate:(id)sender {
    NSInteger totalBillAmount = self.inputTotalBill.text.intValue;
    NSLog(@"input total bill: %i", totalBillAmount);
    NSInteger tipPercent = self.inputTip.text.intValue;
    NSLog(@"input tip percent: %i", tipPercent);

    NSInteger tipAmount = (tipPercent / totalBillAmount) * 100;
    NSLog(@"tip amount: %i", tipAmount);
    NSInteger billAmount = totalBillAmount + tipAmount;
    NSLog(@"total bill: %i", billAmount);

    // Set labels accordingly
    self.labelTipAmount.text = [NSString stringWithFormat:@"%i", tipAmount];
    self.labelBillAmount.text = [NSString stringWithFormat:@"%i", billAmount];
}


这是我的输出:

2016-02-28 01:39:36.283 conversion[1533:58347] input total bill: 100
2016-02-28 01:39:36.285 conversion[1533:58347] input tip percent: 15
2016-02-28 01:39:36.285 conversion[1533:58347] tip amount: 0
2016-02-28 01:39:36.285 conversion[1533:58347] total bill: 100


我真的很困惑,因此不胜感激,谢谢!

最佳答案

有两个问题:您应该执行tipAmount = (tipPercent / 100) * totalBillAmount并强制转换为双精度,因为NSInts不能进行分数运算。

09-17 17:54