2010-07-07 92 views
0

我想创建这个简单的划分程序。但问题是,除数不应该是这样的答案是在小数位,我该如何把检查。指导将不胜感激。简单划分答案无小数位

Option Explicit 
    Dim fiCScore As Integer 
    Dim fiWScore As Integer 
    Dim fsUsername As String 
    Dim fiMax1 As Integer 
    Dim fiMax2 As Integer 
    Dim liWans As Integer 

    Private Sub Form_Load() 

lstCorrect.Clear 
lstWrong.Clear 
fiCScore = 0 
fiWScore = 0 
Randomize 
End Sub 

Private Sub cmdAskQuestion_Click() 
Ask_Question 
End Sub 

Public Sub Ask_Question() 
Dim liOperand1 As Integer 
Dim liOperand2 As Integer 
Dim liResult As Integer 
Dim fbAnswer As Boolean 

Dim liEqua1 As Integer 
Dim liEqua2 As Integer 
Dim lsSign As String 


' Number Generation ' 
fiMax1 = 20 
fiMax2 = 20 

liEqua1 = Int(fiMax1 * Rnd) + 1 
liEqua2 = Int(fiMax2 * Rnd) + 1 
liOperand1 = liEqua1 
liOperand2 = liEqua2 

' Sign Option Select ' 
     ' 
' Division ' 
If optDivide = True Then 
    lsSign = "/" 
    If liEqua1 < liEqua2 Then 
     liOperand1 = liEqua2 
     liOperand2 = liEqua1 
    End If 
    '**Problem Point** 
    liResult = liOperand1/liOperand2 'liOperand1/liOperand2 should not be such that answer (liResult) is in decimal places 
End If 


QuestionAsk: 
liWans = Val(InputBox("What is " & liOperand1 & lsSign & _ 
     liOperand2 & " ?")) 

End_Time 

' If Wans_Validate = False Then          

       ' 
' MsgBox "Please enter numbers only.", vbCritical, "ERROR" ' 
' GoTo QuestionAsk              

         ' 
' End If                

             ' 
' Answer Checking Correct or Wrong         

     ' 
If liWans = liResult Then 
    MsgBox ("Correct Answer!") 
    fbAnswer = True 
Else 
    MsgBox ("Incorrect Answer! " _ 
      & liOperand1 & lsSign & liOperand2 & " = " & liResult) 
End If 

回答

0

建议1(避免隐式转换):

If CDbl(liResult) = CDbl(liOperand1/liOperand2) Then 
    MsgBox "result is an integer" 
Else 
    MsgBox "result is not an integer" 
End If 

建议2(基于由@Ryan答案):

If (liOperand1/liOperand2) = (liOperand1 \ liOperand2) Then 
    MsgBox "result is an integer" 
Else 
    MsgBox "result is not an integer" 
End If 
+0

感谢第二个建议适合我最好的,因为在第一个4.25也是一个整数。 – 2010-07-07 13:32:47

0

如果我理解正确,您只想返回答案的整数部分(商)。要做到这一点,你可以使用'\'而不是'/'。

Dim k As Integer 
k = 23 \ 5 ' sets k to 4. 
+0

不exactly.I不想说的答案永远是十进制的。无论如何,除数是小数点后的答案。 – 2010-07-07 13:35:03

相关问题