我正在通过制作一个简单的技巧计算器来学习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不能进行分数运算。