乘以小数不会给我一个小数答案来反馈给我的变量

Multiplying by a decimal wont give me a decimal answer to feed back into my variable

目前正在使用 Clion 解决家庭作业问题。我相信我正确地使用了我的 if 语句,以及 double 和 char,但它似乎并没有给我我想要的结果。题目问:

我试过移动括号。我已将 .90 声明为一个设置变量并尝试将其相乘,但仍然总是给我相同的答案。我认为这与我的 if-statemets 有关。

using namespace std;

int main() {

double price1, price2, taxRate, fullSubtotal;

char clubCard;

double basePrice, cardPrice, finalPrice;


    // ...

    cout<<"Enter price of first item: ";
    cin>>price1;
    cout<<"Enter price of second item: ";
    cin>>price2;

    cout<<"Does customer have a club card? (Y/N): ";
    cin>>clubCard;

    cout<<"Enter tax rate, e.g. 5.5 for 5.5% tax: ";
    cin>>taxRate;

    fullSubtotal = price1 + price2;
    taxRate /= 100;
    taxRate += 1;

    if (price1 > price2) {
        price2 /= 2.00;
        basePrice = price1 + price2;
        if (clubCard == 'y' || clubCard == 'Y') {
            cardPrice = basePrice * .90;
           finalPrice = taxRate * cardPrice;
        }
        else (clubCard == 'n' || clubCard == 'N'); {
            cardPrice = basePrice;
            finalPrice = taxRate * cardPrice;
        }
    }
    else {
        price1 /= 2.00;
        basePrice = price1 + price2;
        if ((clubCard == 'y') || (clubCard == 'Y')) {
            cardPrice = basePrice * .90;
            finalPrice = taxRate * cardPrice;
        }
        else ((clubCard == 'n') || (clubCard == 'N')); {
            cardPrice = basePrice;
            finalPrice = taxRate * cardPrice;
        }
    }

    cout<<"Base price: "<<fullSubtotal<<endl;
    cout<<"Price after discounts: "<<cardPrice<<endl;
    cout<<"Total price: "<<finalPrice<<endl;

    return 0;
}

每次我输入每个价格的值(10 和 20)时,它都会给我正确的 fullSubtotal,但是当我为该路线(if 语句)寻找相应的 cardPrice 时,它​​会给我 25。总价(含税)为27.0625。我期望输出是 cardPrice: 22.5 和 finalPrice: 24.35625

你的错误在里面的else子句。

else 子句没有条件,所以 (clubCard == 'n' || clubCard == 'N'); 没用,但仍然是正确的 c++。它评估为一个 bool,然后被丢弃。问题是,这之后的块总是被执行,因为它不再有条件了。

要么使用 else if 并删除分号,要么只删除整个条件和分号:

...
if (clubCard == 'y' || clubCard == 'Y') {
    cardPrice = basePrice * .90;
   finalPrice = taxRate * cardPrice;
}
else {
    cardPrice = basePrice;
    finalPrice = taxRate * cardPrice;
}
....

您的问题在 else 部分:

    if(clubCard == 'y' || clubCard == 'Y') {
        cardPrice = basePrice * .90;
        finalPrice = taxRate * cardPrice;
    } else
        (clubCard == 'n' || clubCard == 'N');
    {
        cardPrice = basePrice;
        finalPrice = taxRate * cardPrice;
    }

您尝试为 else 添加的条件变为语句,{} 块中的代码之后会覆盖您之前设置的值。修复:

    if(clubCard == 'y' || clubCard == 'Y') {
        cardPrice = basePrice * .90;
        finalPrice = taxRate * cardPrice;
    } else if(clubCard == 'n' || clubCard == 'N') {
        cardPrice = basePrice;
        finalPrice = taxRate * cardPrice;
    }