查看完整版本: vb.net 兩個有小數點數值相乘,為何會變整數?
頁: [1]

terrypen 發表於 2014-9-11 11:27 PM

vb.net 兩個有小數點數值相乘,為何會變整數?

本帖最後由 terrypen 於 2014-9-11 11:31 PM 編輯

請教各位先進~我在datagridview做數值相乘運算,為什麼有小數點的數值相乘,出來會變整數,我看了MSDN還是一頭霧水,可否為小弟解惑一下,該如何進行運算才好~~謝謝!
Dim iLong as Decimal
Dim iWide as Decimal
Dim iQuantity as Decimal

  iLong = CInt(DataGridView1.Rows(e.RowIndex).Cells("dgvLong").Value) '例如:iLong = 10.2
iWide = CInt(DataGridView1.Rows(e.RowIndex).Cells("dgvWide").Value) '例如:iWide = 5.4

iQuantity = iLong * iWide
            DataGridView1.Rows(e.RowIndex).Cells("dgvQuantity").Value = iQuantity.ToString '值應該 = 55.08, 結果為整數


...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

johnwanz 發表於 2014-9-12 09:35 AM

因為
iLong = CInt(...)
iWide = CInt(...)


這個追蹤一下流程跟變數內容, 一下子就有結果了吧!?

http://msdn.microsoft.com/zh-tw/library/s2dy91zy.aspx
  CInt
  Integer 資料類型 (Visual Basic)
  -2,147,483,648 至 2,147,483,647;小數部分會捨入。1

pitrtw 發表於 2014-9-12 09:53 AM

CInt  --->  IntiLong = Int(DataGridView1.Rows(e.RowIndex).Cells("dgvLong").Value)
iWide = Int(DataGridView1.Rows(e.RowIndex).Cells("dgvWide").Value)

terrypen 發表於 2014-9-12 07:20 PM

謝謝各位先進的解說~~我瞭解了~~我再仔細研究一下~~謝謝^^

Jeepluo 發表於 2014-9-13 07:43 PM

因為是承接的變數定義的問題,INT 是整數,還有你的顯示的FORMAT也要做個定義哦!
<br><br><br><br><br><div></div>

gpgpi 發表於 2014-9-14 01:49 AM

Dim iLong as Decimal
Dim iWide as Decimal
Dim iQuantity as Decimal

  iLong = CInt(DataGridView1.Rows(e.RowIndex).Cells("dgvLong").Value) '例如:iLong = 10.2把中斷點設定在iLong,debug執行到這一步,你看一下iLong這個變數
你用CInt去轉整數了,所以10.2會變成10
把CInt拿掉,你再從中斷去看,iLong就是10.2了

變數iWide,也是以此類推


terrypen 發表於 2014-9-23 08:57 PM

謝謝各位先進詳細的解說~~我大概明白了~~謝謝~~
頁: [1]