Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios IF ELSE语句计算不正确OBJ C_Ios_Objective C_Xcode_If Statement - Fatal编程技术网

Ios IF ELSE语句计算不正确OBJ C

Ios IF ELSE语句计算不正确OBJ C,ios,objective-c,xcode,if-statement,Ios,Objective C,Xcode,If Statement,我正在做一个工资支票计算器。但是,由于某些原因,计算无法准确导出到标签。我把误算的范围缩小到我的IF-ELSE语句。我正在为netPay计算,当我将这个NSLog放在所用的数字括号内时,打印输出非常适合Xcode NSLog(@"Netpay is %f", netPay); 但是,代码my NSLog进一步显示我的准确数字值增加,导致标签中显示不准确的数字 由于税务参数,我有大量If-Else语句。请告诉我我的if-ELSE声明是否需要我遗漏的内容,或者我是否做了错事或未获得批准。对于测试,

我正在做一个工资支票计算器。但是,由于某些原因,计算无法准确导出到标签。我把误算的范围缩小到我的IF-ELSE语句。我正在为netPay计算,当我将这个NSLog放在所用的数字括号内时,打印输出非常适合Xcode

NSLog(@"Netpay is %f", netPay);
但是,代码my NSLog进一步显示我的准确数字值增加,导致标签中显示不准确的数字

由于税务参数,我有大量If-Else语句。请告诉我我的if-ELSE声明是否需要我遗漏的内容,或者我是否做了错事或未获得批准。对于测试,我计算的总收入为2218美元,工作一天。在线ADP计算器说,它应该计算出网付是1860.87美元,但我在测试设备上得到1896.67美元。Xcode上打印出来的NSlog显示,在等式中,我也得到了$1860.87,但在If-Else语句后面的NSlog显示为$1896.67

float bonusRate = [self fetchActualValue:self.bonusTextField.text];
float deductionsRate = [self fetchActualValue:self.deductionTextField.text];
float dailyRate = [self fetchActualValue:self.dailyRateTextField.text];
float daysWorked = [self fetchActualValue:self.daysWorkedTextField.text];
float grossPay = dailyRate * daysWorked + bonusRate;
double bonusTax = .75;
float bonusLeft = bonusRate * bonusTax;
double ssRate = .0620;
double medRate = .0145;
double taxRate = .79;
double M10 = .10;
double E704 = 704.0;
double E2217 = 2217.0;
double MEMW0 = .69;
double MEMW0D = 494.0;
float medgrossrate = (grossPay - bonusRate) * medRate;
float ssgrossrate = (grossPay - bonusRate) * ssRate;
float twoTaxes= medgrossrate + ssgrossrate;
float netPay = (grossPay - bonusRate + bonusLeft) - twoTaxes;
float excessTax = grossPay - E704;
float MW0Tax = excessTax * M10;
double E151 = 151.30;
double M15 = .15;
float excessTax01 = grossPay - E2217;
float MW0Tax1 = excessTax01 * M15;
float MW0FinalTax = MW0Tax1 + E151;

- (IBAction)calculateButtonPressed:(UIButton *)sender
{

if([self.stateTextField.text isEqual:@“ME”])
{
如果([self.filingStatusLabel.text isEqual:@“已婚”]&[self.AllowanceLabel.text isEqual:@“0”])
{
如果(格罗斯贝>=E704 | |格罗斯贝如果(格罗斯斯斯斯帕伊(格罗斯斯斯帕Y>=1610 0 0 0 0(格罗斯斯斯帕伊)(格罗斯斯帕伊(格罗斯斯帕伊)0 0 0 0 0 0 0 0 0 0 0(格罗斯帕伊)号(格罗斯斯帕伊)0 0 0(格罗斯帕伊)号(格罗斯帕伊)0 0 0(格罗斯斯帕伊)0 0 0 0 0(格罗斯斯帕伊)0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0(1244 4 4)号号;格罗斯斯帕伊=179斯帕伊=1790 0 0 0 0 0 0 0 0 0 0 0 0 0 0(格罗斯斯帕伊)号号号号号号;格罗斯斯帕伊)号号号号号号(格罗斯斯帕伊)从从从从从0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0(卡卡卡卡卡卡卡卡卡格罗斯贝=2470格罗斯贝=2550格罗斯贝=2630格罗斯贝(1244)格罗斯斯帕Y=2950 012444 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4支付支付支付支付支付支付支付支付支付支付支付支付支付方方方方方方的支付支付支付支付支付支付支付支付;格罗斯帕币币币币币币币=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 7 7 7 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4格罗斯比=4070 | |格罗斯比=4170 | |格罗斯比=4270 | |格罗斯比=4格罗斯斯斯帕Y=4730よ周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四周四四四四四四四四四四四四四四四四四四四四四四四方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方格罗斯比=6170 | |格罗斯比=6290 | |格罗斯比=6410 | |格罗斯比=6530 |grossPay=6650 | | grossPay
else如果(grossPay>=3030 | | grossPay=3110 | | | | grossPay我怀疑任何人会看,但如果你不只是想用可怕的代码来欺骗我们,那么你至少应该告诉我们你给出的输入以及你对另一端的期望!好吧,首先你应该使用
&
而不是
&
。这可能不是问题,但它不是问题第二,你永远不应该做那么长的
if
梯形图。最好用数字来填充一些数组,选择合适的数组条目,然后对它们进行计算。第三,什么是
E704
E2217
?NSLog显示我的准确数字值增加是没有意义的。我无法理解为什么会有更多的数据r与你想说的完全不同。你在应该使用
&&
的地方使用了
|
(或者完全跳过其中一个测试,因为它包含在前面的if语句测试中)。如果这样设置,像3100美元这样的数字不符合Else-If语句的两个参数吗?@外交官医学-想想看。首先谢谢你。我考虑了一下,然后我改变了编码以反映你的答案。我用&&替换了| |,同时删除了不需要的>=,现在我的计算结果出来了很好,正如你所说。我很抱歉一开始没有提供足够的信息。我一直在学习这个,这个网站是一个巨大的资产,可以教我很多关于Obj C的课程。我真的很感谢你花时间把我推向正确的方向!谢谢!@外交官医疗-你真的应该使用数组/表driven方法,与
if
梯形图相比。更容易编码,更少的bug,更容易更新。我没有使用数组的经验。你到底是什么意思?
    if([self.stateTextField.text  isEqual: @"ME"])
{
    if ([self.filingStatusLabel.text isEqual:@"Married"] & [self.allowancesLabel.text isEqual:@"0"])
    {

        if (grossPay >= E704 || grossPay < E2217)
    {
        if (grossPay >= 1610 || grossPay <= 1669)
        {netPay = (grossPay - bonusRate) - MW0Tax - twoTaxes - .25;}
        else if (grossPay >= 1670 || grossPay <= 1729)
        {netPay = (grossPay - bonusRate) - MW0Tax - twoTaxes - 4.25;}
        else if (grossPay >= 1730 || grossPay <= 1789)
        {netPay = (grossPay - bonusRate) - MW0Tax - twoTaxes - 8.0;}
        else if (grossPay >= 1790 || grossPay <= 1849)
        {netPay = (grossPay - bonusRate) - MW0Tax - twoTaxes - 12.0;}
        else if (grossPay >= 1850 || grossPay <= 1909)
        {netPay = (grossPay - bonusRate) - MW0Tax - twoTaxes - 16.0;}
        else if (grossPay >= 1910 || grossPay <= 1969)
        {netPay = (grossPay - bonusRate) - MW0Tax - twoTaxes - 20.0;}
        else if (grossPay >= 1970 || grossPay <= 2029)
        {netPay = (grossPay - bonusRate) - MW0Tax - twoTaxes - 24.0;}
        else if (grossPay >= 2030 || grossPay <= 2089)
        {netPay = (grossPay - bonusRate) - MW0Tax - twoTaxes - 28.0;}
        else if (grossPay >= 2090 || grossPay <= 2149)
        {netPay = (grossPay - bonusRate) - MW0Tax - twoTaxes - 31.0;}
        else if (grossPay >= 2150 || grossPay <= 2217)
        {netPay = (grossPay - bonusRate) - MW0Tax - twoTaxes - 37.0;}
    }
        else if (grossPay >= 2217 || grossPay <= 6854)

        {   if (grossPay >= 2218 || grossPay <= 2229)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 37.0;
            NSLog(@"Netpay is %f", netPay);}
            else if (grossPay >= 2230 || grossPay <= 2309)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 42.0;}
            else if (grossPay >= 2310 || grossPay <= 2389)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 47.0;}
            else if (grossPay >= 2390 || grossPay <= 2469)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 52.0;}
            else if (grossPay >= 2470 || grossPay <= 2549)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 57.0;}
            else if (grossPay >= 2550 || grossPay <= 2629)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 63.0;}
            else if (grossPay >= 2630 || grossPay <= 2709)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 68.0;}
            else if (grossPay >= 2710 || grossPay <= 2789)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 73.0;}
            else if (grossPay >= 2790 || grossPay <= 2869)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 78.0;}
            else if (grossPay >= 2870 || grossPay <= 2949)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 83.0;}
            else if (grossPay >= 2950 || grossPay <= 3029)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 89.0;}
            else if (grossPay >= 3030 || grossPay <= 3109)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 94.0;}
            else if (grossPay >= 3110 || grossPay <= 3189)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 99.0;}
            else if (grossPay >= 3190 || grossPay <= 3269)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 104.0;}
            else if (grossPay >= 3270 || grossPay <= 3369)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 111.0;}
            else if (grossPay >= 3370 || grossPay <= 3469)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 117.0;}
            else if (grossPay >= 3470 || grossPay <= 3569)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 124.0;}
            else if (grossPay >= 3570 || grossPay <= 3669)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 130.0;}
            else if (grossPay >= 3670 || grossPay <= 3769)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 137.0;}
            else if (grossPay >= 3770 || grossPay <= 3869)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 143.0;}
            else if (grossPay >= 3870 || grossPay <= 3969)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 150.0;}
            else if (grossPay >= 3970 || grossPay <= 4069)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 156.0;}
            else if (grossPay >= 4070 || grossPay <= 4169)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 163.0;}
            else if (grossPay >= 4170 || grossPay <= 4269)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 169.0;}
            else if (grossPay >= 4270 || grossPay <= 4369)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 177.0;}
            else if (grossPay >= 4370 || grossPay <= 4489)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 187.0;}
            else if (grossPay >= 4490 || grossPay <= 4609)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 196.0;}
            else if (grossPay >= 4610 || grossPay <= 4729)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 206.0;}
            else if (grossPay >= 4730 || grossPay <= 4849)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 215.0;}
            else if (grossPay >= 4850 || grossPay <= 4969)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 225.0;}
            else if (grossPay >= 4970 || grossPay <= 5089)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 234.0;}
            else if (grossPay >= 5090 || grossPay <= 5209)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 244.0;}
            else if (grossPay >= 5210 || grossPay <= 5329)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 253.0;}
            else if (grossPay >= 5330 || grossPay <= 5449)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 263.0;}
            else if (grossPay >= 5450 || grossPay <= 5569)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 272.0;}
            else if (grossPay >= 5570 || grossPay <= 5689)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 282.0;}
            else if (grossPay >= 5690 || grossPay <= 5809)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 291.0;}
            else if (grossPay >= 5810 || grossPay <= 5929)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 301.0;}
            else if (grossPay >= 5930 || grossPay <= 6049)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 311.0;}
            else if (grossPay >= 6050 || grossPay <= 6169)
            { netPay = (grossPay) - (MW0FinalTax + twoTaxes) - 320;}
            else if (grossPay >= 6170 || grossPay <= 6289)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 330.0;}
            else if (grossPay >= 6290 || grossPay <= 6409)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 339.0;}
            else if (grossPay >= 6410 || grossPay <= 6529)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 349.0;}
            else if (grossPay >= 6530 || grossPay <= 6649)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 358.0;}
            else if (grossPay >= 6650 || grossPay <= 6769)
            {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 368.0;}

            NSLog(@"Netpay 1 is %f", netPay);
    }

    }

    }
else if (grossPay >= 3030 || grossPay <= 3109)
    {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 94.0;}
else if (grossPay >= 3110 || grossPay <= 3189)
    {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 99.0;}
else if (grossPay <= 3109)
    {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 94.0;}
else if (grossPay <= 3189)
    {netPay = (grossPay - bonusRate) - MW0FinalTax - twoTaxes - 99.0;}