2014-11-12 5 views
0

Я работаю над инструментом, который принимает цену на предмет и количество, которое продается (ввод пользователем). Если количество составляет 50 или более, покупатели получат скидку 20%. Все 49 или ниже получают 10%. Текущий код возвращает 0Применить скидку с различными уровнями ставок

Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click 

    Dim a, b As Integer 
    a = txtPrice.Text 
    b = txtQuantity.Text 
    If b >50 Then b = 0.2 
    If b <50 Then b = 0.1 

    lblTotal.Text = (a * b)/100 

End Sub 

Я думаю, что, возможно, процент части неправильно? Надеюсь, кто-то может помочь.

+0

Ну,' б> = 50' и 'б <= 50' означает, что все ** при ** 50 получит обе скидки, что не то, что вы хотите. Ваша формула тоже выглядит неправильно - я думаю, вам нужно что-то вроде 'a - (a * b)'. – Tim

+0

uhm .. ** «Ничего 49 или ниже не получает 10%». ** должно быть «Если b <50 Затем b = 0,1', потому что ваш код atm указывает« если b меньше ИЛИ равен 50 » – jmesolomon

+0

Теперь, если пользователь вводит 50, они не получают скидку ..... и вы переписываете значение 'b' (количество) в вашем коде. – Tim

ответ

0

Ваша логика кажется немного выключенной, и вы переписываете значение b, прежде чем вы его вычислите. Предполагая, что (и я мог бы быть неправильно) вы хотите общую цену после скидки для заказа, попробуйте следующее:

Dim price As Integer 
Dim quantity As Double 

price = CInt(txtPrice.Text) 
quantity = CDbl(txtQuantity.Text) 

If quantity > = 50 Then 
    lblTotal.Text = ((price * quantity) * 0.8).ToString() 
Else 
    lblTotal.Text = ((price * quantity) * 0.9).ToString() 
End If 

Пару вещей, чтобы отметить здесь.

Во-первых, я использовал CInt и CDbl на текст из текстовых полей. VB.NET будет (в зависимости от ваших вариантов) разрешить это, но это плохая форма, чтобы привыкнуть к тому, чтобы компилятор мог преобразовывать значения (от строки в текстовом поле до int/double/decimal независимо от того, что угодно) и вызовет у вас головные боли, если вы перейдите на строго типизированный язык, такой как C# или Java.

Во-вторых, я использовал 0,8 для скидки 20% (потому что на самом деле они получают его на 80%) и 0,9 за 10% скидку. Этот расчет предполагает, что скидка равна сумме заказа, если вам не нужно соответствующим образом корректировать формулу.

0

Тим прибил его. Спасибо, Тим.

Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click 

Dim a, b As Integer 
a = txtPrice.Text 
b = txtQuantity.Text 
If b >=50 Then b = 0.2 
If b <50 Then b = 0.1 

lblTotal.Text = (a * b)/100 
End Sub 

«необходимо repleace "(а * б)/100" с "- (A * B)"

+0

Обратите внимание, что формула может быть неверной, поскольку она будет работать как (a * 0,2/0,1)/100, что может быть не таким, каким вы хотите. Другим вариантом было бы переназначить 'a' как' a = a * .01/.02', но это действительно зависит от того, что вы ожидаете от общей суммы (где применяется скидка). – Tim

+0

В коде выше, что происходит, если вы заказываете 50 ... Ничего. сделайте это> 49 – Creator

+0

, что бы это было, чтобы включить 50 на уровне 20%? – King96