Мне нужна помощь с моей программой на C#. Предполагается спросить, сколько в партии, тогда пользователь вводит свою цену на вход, если они хотят, чтобы напиток добавлял это, а затем берет скидку. Проблема, с которой я сталкиваюсь, заключается в том, что если я делаю больше, чем один в партии, и они получают скидку, это не дает правильных результатов. Вот мой код.Моя программа заказа на C# не вычисляется правильно
class Program
{
static void Main(string[] args)
{
int inParty = 0;
int discoutSelection = 0;
double entreeAmount = 0;
int drinkSelection = 0;
double drinkPrice = 1.25;
double discount = 0;
double orderAmount = 0;
double tax = 0.07;
double taxAmount = 0;
double finalTotal = 0;
Console.WriteLine("**********Welcome to K&W**********\n\n");
Console.Write("How many are in your part? ");
inParty = Convert.ToInt32(Console.ReadLine());
while(inParty > 0)
{
inParty--;
Console.Write("\nEnter your entree amount: $");
entreeAmount = Convert.ToDouble(Console.ReadLine());
Convert.ToDouble(orderAmount += entreeAmount);
Console.Write("Do you want a drink, enter 1 for yes or another number for no. ");
drinkSelection = Convert.ToInt32(Console.ReadLine());
if (drinkSelection == 1)
{
Convert.ToDouble(orderAmount += drinkPrice);
}
else
{
Console.WriteLine("\tNo drink at this time");
}
Console.Write("\nPlease choose a discount, enter 1 for senior, 2 for child or 3 for none: ");
discoutSelection = Convert.ToInt32(Console.ReadLine());
if (discoutSelection == 1)
{
//Convert.ToDouble(discount = 0.10);
orderAmount = Convert.ToDouble(orderAmount * 0.90);
}
if (discoutSelection == 2)
{
//Convert.ToDouble(discount = 0.20);
orderAmount = Convert.ToDouble(orderAmount * 0.80);
}
finalTotal += Convert.ToDouble(orderAmount);
entreeAmount = 0;
drinkSelection = 0;
discoutSelection = 0;
orderAmount = 0;
}
taxAmount = Convert.ToDouble(orderAmount * tax);
finalTotal = Convert.ToDouble(orderAmount + taxAmount);
Console.WriteLine("\nYour bill is below:\n");
Console.WriteLine("Your subtotal is\t{0:C}", orderAmount);
Console.WriteLine("Tax amount is\t{0:C}", taxAmount);
Console.WriteLine("Your final bill is:\t{0:C}", finalTotal);
Console.WriteLine("\n\nThank you for your order come again soom!!");
}
}
}
Вы должны использовать тип «десятичный» для денежных значений. Это гораздо более точно при выполнении таких расчетов. – ChrisF
Это также поможет, если вы сообщите нам, какие ожидаемые значения и какие значения вы на самом деле получаете. – ChrisF
*** UAFD *** * (Используйте A F ### ing Debugger) * Установите точку останова, выполните свой код, просмотрите переменные. – abelenky