作者commiserate (無)
看板Visual_Basic
標題Re: [.NET] 程式計算有點問題………
時間Fri Feb 16 09:41:02 2007
※ 引述《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
推 LPH66:那果然是四捨五入掉了...CInt會做四捨五入 02/16 20:02
→ sanbis:結果出來了~四捨五入後造成的,把/換成\就好了 02/16 21:45
→ sanbis:感激你的回答與協助~XDD 02/16 21:46
推 fumizuki:Int() 的效果同等於整數除法 \ 02/17 12:26
→ fumizuki:但 \ 只可接受長整數或比它小的資料型態 02/17 12:26
推 fumizuki:vb6 mod --> 長整數 vb2005 mod --> 倍精數 02/17 12:28