作者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
1F:推 LPH66:那果然是四舍五入掉了...CInt会做四舍五入 02/16 20:02
2F:→ sanbis:结果出来了~四舍五入後造成的,把/换成\就好了 02/16 21:45
3F:→ sanbis:感激你的回答与协助~XDD 02/16 21:46
4F:推 fumizuki:Int() 的效果同等於整数除法 \ 02/17 12:26
5F:→ fumizuki:但 \ 只可接受长整数或比它小的资料型态 02/17 12:26
6F:推 fumizuki:vb6 mod --> 长整数 vb2005 mod --> 倍精数 02/17 12:28