2017-05-28 93 views
0

所以我目前正在添加一個基本的計算器,允許用戶定義2個變量,然後按下一個按鈕,將變量放入基本的數學公式中,然後顯示結果,但我認爲我完全錯了。VB.net中的基本數學函數

這是我第一次在VB中使用數學函數,並希望如果有人能告訴我哪裏會出錯。

這是到目前爲止我的代碼:

Imports System.Math 
Public Class SOGACALC 
Dim soga As String = Math.Abs(72 - months.Text) * opp.Text 
Private Sub SOGACALC_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

End Sub 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    SOGAValue.Text = soga 
End Sub 

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    HOME.Show() 
    Me.Close() 
End Sub 

End Class 

回答

0

如果你寫

Dim soga As String = Math.Abs(72 - months.Text) * opp.Text 

我懷疑你正期待這soga將是性能的函數中提到的這一點,將當這些屬性改變時改變。它不這樣工作。

得到這取決於它的參數值的方法是定義一個函數,所以你可能有:

Friend Function Soga(monthValue As Control, oppThing As Control) As String 
    Dim month As Integer = CInt(monthValue.Text) 
    Dim opp As Decimal = CDec(oppThing.Text) 

    Return (Math.Abs(72 - month) * opp).ToString() 

End Function 

,並調用它像:

'TODO: Give Button1 a meaningful name. 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    SOGAValue.Text = Soga(months, opp) 
End Sub 

在有管制在表單上名稱「月」和「opp」。

我強烈建議您使用Option Strict On - 它會指出代碼中的問題併爲您提供更正建議。

請注意,我對opp使用了十進制類型 - 我不得不猜測一個合適的類型,因爲您向我們展示的代碼中沒有任何指示,表明它需要什麼類型。

一個改進是使用TryParse方法而不是CInt/CDec,以便您可以通知用戶他們是否犯了簡單的輸入錯誤。

+0

謝謝......這使得更有意義:-) –

+0

出於好奇......有沒有一種方法來設置返回的值四捨五入到2位小數?我只能找到圓選項,但輪到最接近的整數不是小數點位置 –

+0

@DavidHosker [Math.Round方法(十進制,Int32,MidpointRounding)](https://msdn.microsoft.com/en-us/library/ ms131275(v = vs.110)的.aspx) –