2014-12-21 105 views
-5

我做了一個sodavending mashine,它可以顯示價格,支付多少,它可以給你退錢,但由於某種原因,程序開始計算錯誤,它在這裏工作得很好有一天,我沒有改變我的代碼,所以我舉個例子,我喝了一杯蘇打水到18克朗,然後我在機器上放了5克拉,然後我按下了工資,並且由於某種原因說這裏是你付的錢很多,並且給你-13克拉,這一天在這裏沒有這樣做,正如我所說的,我沒有改變代碼。下面是一段代碼,讓我很煩:(貴重物品在丹麥)VB.NET計算錯誤

'Her fortæller jeg om man har givet det beløb man skal 
Private Sub ButtonBetal_Click(sender As Object, e As EventArgs) Handles ButtonBetal.Click 
    If TextBoxBeløb.Text = TextBoxPris.Text Then 
     MsgBox("Værsgo") 
    End If 

    If TextBoxBeløb.Text < TextBoxPris.Text Then 
     MsgBox("Ikke nok penge") 
    End If 

    If TextBoxBeløb.Text > TextBoxPris.Text Then 
     MsgBox("Her er de overskyende penge og din sodavand :)") 
    End If 

    If TextBoxBeløb.Text > TextBoxPris.Text Then 
     TextBoxPengeTilbage.Text = TextBoxBeløb.Text - TextBoxPris.Text 
    End If 
End Sub 

如果有人可以幫助我將非常greatfull

+3

當您調試這一點,其中*特別*失敗?你爲什麼要對* text *值而不是* numeric *值進行數學運算? – David

+2

請在比較之前轉換爲整數 – HoangHieu

+5

[Option Strict Off](http://msdn.microsoft.com/zh- cn/library/zcd4xwzs.aspx)聲稱另一個受害者。這個選項應該在**上**。認真。 –

回答

3

你似乎比較字符串值,而不是數字。按字母順序,「13」小於「5」,這就是爲什麼它不起作用。在進行比較和計算之前,您需要將文本值轉換爲數字。

喜歡的東西:(希望這是正確的,我是一個C#程序員,而不是VB)

Dim Beløb as Decimal = Convert.ToDecimal(TextBoxBeløb.Text) 
Dim Pris as Decimal = Convert.ToDecimal(TextBoxPris.Text) 

If Beløb = Pris Then 
    MsgBox("Værsgo") 
End If 

If Beløb < Pris Then 
    MsgBox("Ikke nok penge") 
End If 

If Beløb > Pris Then 
    MsgBox("Her er de overskyende penge og din sodavand :)") 
    TextBoxPengeTilbage.Text = Beløb - Pris 
End If 
+0

考慮到OP問題中的整數例子,我假設Kr相當於一分錢/分。如果情況並非如此,那麼是的,它們應該是小數。 – Alan

+1

更新爲使用更合適的小數。 – Alan

+0

呵呵,沒有kr(克朗)是丹麥貨幣。 :) –