[算表] VBA 次方运算溢位

楼主: lightning990 (lightning990)   2022-09-15 16:03:52
软件:EXCEL
版本:2019
各位神人好,小弟使用以下运算式运算时,当次方过大时会产生溢位的错误
范例
Msgbox 2 ^ 35 - 1 And 2 ^ 1
=>溢位
Msgbox 2 ^ 20 - 1 And 2 ^ 1
=>2
以上是为了做排列组合所做的判断式
小弟有尝试把所有的变量和结果都设定为Double ,但是还是不行
麻烦各位大大帮小弟看一下如何才能避免溢位,十分感谢。
作者: waiter337 (给开司一罐苏格登)   2022-09-16 20:20:00
弱弱的回 and 单独使用的概念我不清楚不过若只测试 Debug.Print 2 ^ 35 - 1 并不会溢位
楼主: lightning990 (lightning990)   2022-09-16 20:40:00
感谢回复,因为需要搭配and 做次方的检查,所以无法单独使用
作者: waiter337 (给开司一罐苏格登)   2022-09-16 20:45:00
抱歉 2进位运算 我不是很熟 烦请高手另外 我怀疑 要创阵列表 跑循环设定为long看看https://club.excelhome.net/thread-859706-1-1.html对岸的 有查到>31 可能要改用文字记录我晚点写出来 大概就是用阵列纪录主轴是用阵列纪录0跟1 将2^35 与 2 ^ 1 两组都列出来然后用第一组阵列修改 若发现第二组阵列或第一组阵列有1 那么第一组阵列就变成1 (2进位and逻辑)然后最后把 第一组阵列 用循环 step-1 把字串一个一个从屁股把字一个一个提出来 用&并起来转成阵列的写法 可以参考那个网址的辗转相除法但不要用递回 直接用阵列解决补充一下第二组阵列与第一组阵列也是用循环逐列俩俩比对有没有1
楼主: lightning990 (lightning990)   2022-09-16 22:58:00
感谢大大的回复,我试了一下,目前看起来只要超过33次方就会溢位,我试着把资料限缩在30次方以内,谢谢你
作者: waiter337 (给开司一罐苏格登)   2022-09-20 17:13:00
后来想想 也不一定要阵列只要你改成文字 1010逐个比对 然后照逻辑 看是多少也应该能得出

Links booklink

Contact Us: admin [ a t ] ucptt.com