2017-05-28 22 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 

フォーム上に "months"と "opp"という名前を付けます。

Option Strict Onを使用することを強くお勧めします。コード内の問題を指摘し、修正を提案します。

oppのDecimalタイプを使用していることに注目してください。適切なタイプを推測しなければなりませんでした。

改善点は、CInt/CDecの代わりにTryParseメソッドを使用することです。これにより、ユーザーに単純なタイピングエラーが発生したかどうかを知らせることができます。

+0

ありがとうございます。それははるかに意味があります:-) –

+0

好奇心から...小数点以下2桁まで切り上げた値を設定する方法はありますか?私はラウンドオプションしか見つけることができませんが、小数点以下ではない最も近い整数に丸めます。 –

+0

@DavidHosker [Math.Roundメソッド(Decimal、Int32、MidpointRounding)](https://msdn.microsoft.com/en-us/library/ ms131275(v = vs.110).aspx) –

関連する問題