乘以小数不会给我一个小数答案来反馈给我的变量
Multiplying by a decimal wont give me a decimal answer to feed back into my variable
目前正在使用 Clion 解决家庭作业问题。我相信我正确地使用了我的 if 语句,以及 double 和 char,但它似乎并没有给我我想要的结果。题目问:
- 买一送一优惠:低价商品半价。
- 如果客户是俱乐部卡会员,额外 10% 的折扣。
- 已加税。
我试过移动括号。我已将 .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;
}
目前正在使用 Clion 解决家庭作业问题。我相信我正确地使用了我的 if 语句,以及 double 和 char,但它似乎并没有给我我想要的结果。题目问:
- 买一送一优惠:低价商品半价。
- 如果客户是俱乐部卡会员,额外 10% 的折扣。
- 已加税。
我试过移动括号。我已将 .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;
}