急!2进制数转化为10进制数的程序~!大家看我代码哪错了?

来源:百度知道 编辑:UC知道 时间:2024/06/08 05:16:25
由于2进制数也有小数部分‘‘所以我把输入也分为两个部分,即用两个TEXT对话筐,一个输整数部分,一个输小数部分‘
Private Sub Command1_Click()
Double, e%, i%, j%, f%’先多定义几个备用

a = Val(Text1.Text) ’输整数部分
b = Val(Text2.Text) ’输小数部分
c = Len(a)
d = Len(b)
ReDim x(1 To c)
For i = 1 To c
x(i) = Mid(a, i, 1) * (2 ^ (c - i)) ’求整数部分.我怀疑这段计算有错
e = x(i) + e
Next i
ReDim y(1 To d)
For j = 1 To d
y(j) = Mid(b, j, 1) * 2 ^ (-j) ’求小数部分 我怀疑这段计算有错
f = y(j) + f
Label2.Caption = e & "." & f
Next j
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii <> 48 And KeyAscii <> 49 Then ’(48 49是 0和1的ASCII码 ,这个是指如果输入除0和1以外的数就提示)
Print "输入数据错误~"
Text1.Text = ""
End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii <> 48 And KeyAscii <> 49 Then
Print "输入数据错误~"
Text2.Text = ""
End If

Private Sub Form_Load()
Dim a, b, c, d, x, y, e, f
Text1.Text = ""
Text2.Text = ""
End Sub

Private Sub Command1_Click()
a = Val(Text1.Text) '输整数部分
b = Val(Text2.Text) '输小数部分
c = Len(a)
d = Len(b)
For i = 1 To c
x = Mid(a, i, 1) * (2 ^ (c - i))
e = x + e
Next i
For j = 1 To d
y = Mid(b, j, 1) * 2 ^ (-j)
f = y + f
Label2.Caption = e + f
Next j
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii <> 48 And KeyAscii <> 49 Then
Print "输入数据错误~"
Text1.Text = ""
End If
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii <> 48 And KeyAscii <> 49 Then
Print "输入数据错误~"
Text2.Text = ""
End If
End Sub

在实际运行中还有几个问题:
1.在Text1和Text2中,输入错误后并不能清空
2.小数部分左边的0是不能够去掉的,但是在这一句中b = Val(Text2.Text)