2014-08-30 97 views
0

我想在Visual Basic中創建一個MPG計算器,但它只計算整數而不是小數。當我輸入10加侖部分和375英里部分時,計算器只計算37而不是37.5。MPG計算器沒有給出正確的答案

Public Class Form1 
    Private Sub btnCalculateMpg_Click(sender As Object, e As EventArgs) Handles btnCalculateMpg.Click 
     'Declare variables for the calculation. 
     Dim intMpg As Integer 

     lblMpgCalculated.Text = String.Empty 

      Try 
       'Calculate and display Miles per Gallon. 
      intMpg = CInt(txtMiles.Text) \ 
        CInt(txtGallons.Text) 
      lblMpgCalculated.Text = intMpg.ToString("N") 
      Catch 
       'Error Message. 
       MessageBox.Show("All input must be valid numeric values.") 
      End Try 
    End Sub 
+1

歡迎來到Stack Overflow!如果下面的答案之一解決了您的問題,您應該接受它(點擊相應答案旁邊的複選標記)。這樣做有兩件事:它讓每個人都知道你的問題已經解決,並且它給了幫助你信任的人。請參閱[此處](http://meta.stackexchange.com/a/5235/187716)以獲取完整說明。 – APerson 2014-08-30 02:20:05

回答

0

Integer s只是整數。將分區結果存儲在Integer中將執行整數除法,這意味着您的結果也將是一個整數,小數點將被截斷。要得到小數,你應該聲明你的結果變量爲Double

+0

感謝您的回覆。它確實需要被宣佈爲雙倍。 – TRuSoCiaLMiSFiT 2014-08-30 16:01:09

1

intMpg不應該是一個整數,如果你不想收到一個整數的結果。您可能需要使用Double,在這種情況下,你聲明intMpg行是:

Dim intMpg As Double 

你也應該使用/運營商的分工,而不是\運營商,因爲後者執行整數分頻,如解釋here

所以,在這裏執行部門應行:

intMpg = CInt(txtMiles.Text)/CInt(txtGallons.Text) 

如果執行這些變化,intMpg將是一個誤導性的名字(因爲它不是一個整數,儘管名字聽起來好像它是),所以你應該改變它像milesPerGallon

+0

感謝您的建議和解釋每個錯誤部分的信息。有效。 – TRuSoCiaLMiSFiT 2014-08-30 15:59:59

相關問題