こんにちは。先日はどうもお世話になりました。
現在VBで電卓を作っているものです。
なんとか連続して演算子を入力して計算すると
正しい答えが戻ってこないという問題は解決できました。
ここからなんですがあと実装すべきなのが
小数点とキーボード入力です。
現在小数点に取り組んでいまして、
小数点を押すと点はつくのですが、
そのあとの計算方法がいまだに思いつかない状況です。
ぜひご教授いただければと思います。
よろしくお願いします。
ちなみに私が思いついていた計算方法なのですが
'もし小数点があるならば
if land > 0 then
textans.text &= 1 / (10^land)
land += 1
else
textans.text &= 1
end if
landという変数を用いて
小数点を押してからN回目で押すと
その数字を10のN乗で割ってその数をそのまま電卓の画面上にある数字に
入れていくという方法を考えていました。
ただ、これだとうまくいきませんでした。
ソースコードを一部載せておきます。
数字のボタンクリック処理
'数字ボタン「1」クリック処理
Private Sub BtnOne_Click(sender As Object, e As EventArgs) Handles BtnOne.Click
'エラー表示時の処理
If TextAns.Text = "E:桁数超過" Or TextAns.Text = "0で割ることはできません" Then
Exit Sub
End If
'もし入力されたのが数字だった場合 If beforeIn >= "0" And beforeIn <= "9" Or beforeIn = "." Then '直前で押されたのが数字ボタンだった場合 'かつ、12桁未満の数値が入力されているとき If TextAns.Text.Length < 12 Then TextAns.Text &= "1" Else MsgBox("これ以上入力できません", 48, "警告メッセージ") Exit Sub End If Else TextAns.Text = "1" End If beforeIn = "1" End Sub
演算子ボタンクリック処理
'「+」ボタンクリック処理 Private Sub BtnPlus_Click(sender As Object, e As EventArgs) Handles BtnPlus.Click 'エラー表示時の処理 If TextAns.Text = "E:桁数超過" Or TextAns.Text = "0で割ることはできません" Then Exit Sub End If '12桁以下なら計算可能 If TextAns.Text.Length < 12 Then '前回入力されたのが数字の場合 If beforeIn >= "0" And beforeIn <= "9" Then If ope = "C" Then Ans = CType(TextAns.Text, Double) ElseIf ope = "+" Then 'Ansに保存されている+ボタンクリック前の数値と加算 Num = CType(TextAns.Text, Double) Ans = Ans + Num '電卓の画面に表示 If TextAns.Text.Length >= 13 Then TextAns.Text = "E:桁数超過" Exit Sub Else TextAns.Text = Ans End If ElseIf ope = "-" Then Num = CType(TextAns.Text, Double) Ans = Ans - Num '電卓の画面に表示 If TextAns.Text.Length >= 13 Then TextAns.Text = "E:桁数超過" Exit Sub Else TextAns.Text = Ans End If ElseIf ope = "*" Then Num = CType(TextAns.Text, Double) Ans = Ans * Num '電卓の画面に表示 If TextAns.Text.Length >= 13 Then TextAns.Text = "E:桁数超過" Exit Sub Else TextAns.Text = Ans End If ElseIf ope = "/" Then Num = CType(TextAns.Text, Double) If Num = 0 Then TextAns.Text = "0で割ることはできません" Exit Sub Else Ans = Ans / Num End If '電卓の画面に表示 If TextAns.Text.Length >= 13 Then TextAns.Text = "E:桁数超過" Exit Sub Else TextAns.Text = Ans End If End If Else '前回クリックされたボタンが数値以外の場合 Select Case ope Case "C" '前回がクリアボタン Ans = CType(TextAns.Text, Double) Case "=" '前回がイコールボタン Ans = Ans + Num Case "+" '前回が Num = Ans End Select End If Else MsgBox("これ以上入力できません", 48, "警告メッセージ") Exit Sub End If beforeIn = "+" ope = "+" End Sub
小数点追加ボタンクリック処理
'小数点ボタンクリック処理
Private Sub BtnComma_Click(sender As Object, e As EventArgs) Handles BtnComma.Click
'エラー表示時の処理
If TextAns.Text = "E:桁数超過" Or TextAns.Text = "0で割ることはできません" Then
Exit Sub
End If
If 0 <> InStr(TextAns.Text, ".") Then MsgBox("すでに小数点が存在しています", 48, "警告メッセージ") Exit Sub Else If TextAns.Text = "0" Then TextAns.Text = "0." land += 1 Else TextAns.Text &= "." land += 1 End If End If beforeIn = "." End Sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/10 06:16
2015/06/10 06:21
2015/06/10 06:23
2015/06/10 06:28
2015/06/10 06:39
2015/06/10 06:41
2015/06/10 06:47
2015/06/10 06:58
2015/06/10 07:03