作者capoer (不睡觉先生)
看板Office
标题[算表] VBA 大数值位元运算溢位问题
时间Sun Jan 10 21:37:54 2016
软体: Excel
版本: 2010
用 VBA 做大数值的位元运算时,一直遇到溢位的问题,
产生溢位的数值如下:
dim lngLeft as long
dim lngRight as long
lngLeft = 859001186
lngRight = 858989328
lngLeft = lngLeft Xor (lngRight * 4)
此时就会发生溢位,
用 python 跑出来的结果会是
lngLeft = 4294958370
请问各位大大有没有好的方法可以解这个问题,感谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.34.98.62
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1452433076.A.290.html
1F:推 lilyhu: 宣告变数的时候把As Long改成As Varient 01/10 21:52
2F:→ lilyhu: 如果不是非常清楚变数型别就不要宣告或设定成Varient 01/10 21:53
3F:→ capoer: 改成variant後还是发生溢位的问题 01/10 21:56
4F:→ soyoso: 先将lngleft和lngright数值转二进位 01/10 22:35
6F:推 lilyhu: 我在Excel 2013把两变数都宣告成LongLong可以直接执行 01/10 23:08
8F:→ soyoso: 32位元 01/10 23:22
9F:→ soyoso: 另测试了2003,2007,2010,32位元版本都产生溢位了 01/10 23:28
10F:→ capoer: 感谢soyoso大大,看来只能用字串硬上了,感谢提供 code 01/11 01:08
11F:→ capoer: to lilyhu:2010没有LongLong,即使改成Currency还是溢位了 01/11 01:10
12F:→ soyoso: longlong於2010版本有,但限64位元版本 01/11 08:33