2010-07-07 93 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

相關問題