Re: [.NET] 程式計算有點問題………

看板Visual_Basic作者 (無)時間18年前 (2007/02/16 09:41), 編輯推噓3(303)
留言6則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《sanbis (方正)》之銘言: : ※ 引述《sanbis (方正)》之銘言: : : input = Val(Me.TextBox1.Text) : : da = input / 524288 : : mda = input Mod 524288 : : Me.Label1.Text = Hex(da) : : 推 LPH66:我懷疑是四捨五入掉了... 02/15 21:02 : : → LPH66:試試用整數除 \ 02/15 21:03 : 剛剛測試了一下, : 把 mod 出來的數值也顯示出來, : 發現一點古怪的問題……… : 1548576 mod 524288 的數值應該是商 2 餘數 500000 : 但是計算以後出來的卻是商 3 餘數 50000 我也測試了一下 發現沒有問題啊 實驗一:用整數除 input \ 524288 Dim input As Double = Val(Me.TextBox1.Text) Dim da As Integer = input \ 524288 Dim mda As Integer = input Mod 524288 MsgBox(da & " " & mda) 結果: da = 2 mda = 500000 如果用 input / 524288 會出現一個問題 實驗二: Dim input As Integer = Val(Me.TextBox1.Text) Dim da As Double = input / 524288 Dim mda As Integer = input Mod 524288 MsgBox(da & " " & mda) 結果: da = 2.95367431640625 mda = 500000 我想你會出現 da = 3 是因為 你讓 da as integer 所以自動做了 CInt(2.95367431640625) 這個動作 餘數部分我看是沒問題 我猜是你的 lebel 長度不夠長吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.63.21.246

02/16 20:02, , 1F
那果然是四捨五入掉了...CInt會做四捨五入
02/16 20:02, 1F

02/16 21:45, , 2F
結果出來了~四捨五入後造成的,把/換成\就好了
02/16 21:45, 2F

02/16 21:46, , 3F
感激你的回答與協助~XDD
02/16 21:46, 3F

02/17 12:26, , 4F
Int() 的效果同等於整數除法 \
02/17 12:26, 4F

02/17 12:26, , 5F
但 \ 只可接受長整數或比它小的資料型態
02/17 12:26, 5F

02/17 12:28, , 6F
vb6 mod --> 長整數 vb2005 mod --> 倍精數
02/17 12:28, 6F
文章代碼(AID): #15rGkluV (Visual_Basic)
文章代碼(AID): #15rGkluV (Visual_Basic)