2016-11-01 6 views
0

Мой вопрос: bigmac отлично работает, когда я нажимаю кнопку bigmacadd и кнопку минус. Но когда я нажимаю кнопку mcdouble add, я получаю кучу чисел. Как я могу это сделать, чтобы он показывал 2,50 в виде десятичных знаков?Как объединить двойные значения?

Public Class Form1 
    Const bigmac As Decimal = 4D 
    Const mcdouble As Decimal = 2.25 
    Dim tax As Decimal 
    Dim price As Decimal 
    Dim quantity As Integer 
    Dim finaltotal As Decimal 

    Private Sub Btnbigmacadd_Click(sender As Object, e As EventArgs) Handles Btnbigmacadd.Click 
     quantity = quantity + 1 
     txtquan.Text = quantity 

     price += bigmac 
     txtprice.Text = price 

     tax = price * 0.15 
     txttax.Text = tax 

     finaltotal = price + tax 
     txtfinaltotal.Text = finaltotal 
    End Sub 

    Private Sub btnbigmacminus_Click(sender As Object, e As EventArgs) Handles btnbigmacminus.Click 
     quantity = quantity - 1 
     txtquan.Text = quantity 

     price -= bigmac 
     txtprice.Text = price 

     tax = price * 0.15 
     txttax.Text = tax 

     finaltotal = price + tax 
     txtfinaltotal.Text = finaltotal 
    End Sub 

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 
     quantity = quantity + 1 
     txtquan.Text = quantity 

     price += mcdouble 
     txtprice.Text = price 

     tax = price * 0.15 
     txttax.Text = tax 

     finaltotal = price + tax 
     txtfinaltotal.Text = finaltotal 
    End Sub 
End Class 
+0

Вы должны быть более конкретным и должны приложить определенные усилия для решения проблемы. Что делает эта программа? Что такое «куча чисел», которую вы сейчас получаете в качестве вывода? Что вы пробовали? Что вы знаете до сих пор? Выбирая какой-то код и говоря, что вы хотите 2.50, поскольку выход не является тем, что нужно сделать. –

+2

Я предполагаю, что он получает общее количество, которое имеет всего лишь 2 десятичных знака, например 2.50293. Если это так, используйте 'txtfinaltotal.Text = Format (finaltotal," #. 00 ")' Среднее значение 0 равно двум десятичным знакам. –

+1

Также: никогда никогда ** НИКОГДА не используйте 'Double' при работе с деньгами. Вместо этого, при обработке денег (и других вещей, где небольшие погрешности в точности имеют значимые последствия), вы должны использовать тип «Десятичный». Он на несколько порядков медленнее, но иногда точность имеет большее значение, и обработка денежных расчетов является одним из тех случаев. –

ответ

2

Вы можете округлить tax на два знака после запятой, используя Math.Round метод

tax = Math.Round(price * 0.15D, 2) 
txttax.Text = tax.ToString() 

finaltotal = price + tax 
txtfinaltotal.Text = finaltotal.ToString() 

Если хотите сохранить дополнительные десятичные места в tax и finaltotal, но показывают только два знака после запятой в текстовых полях, вы можете использовать метод ToString("N2").

tax = price * 0.15D 
txttax.Text = tax.ToString("N2") 

finaltotal = price + tax 
txtfinaltotal.Text = finaltotal.ToString("N2") 
+0

Не знаете, почему это было приостановлено – Sehnsucht