作者lightning990 (lightning990)
看板Office
标题[算表] VBA 次方运算溢位
时间Thu Sep 15 16:03:52 2022
软体:EXCEL
版本:2019
各位神人好,小弟使用以下运算式运算时,当次方过大时会产生溢位的错误
范例
Msgbox 2 ^ 35 - 1 And 2 ^ 1
=>溢位
Msgbox 2 ^ 20 - 1 And 2 ^ 1
=>2
以上是为了做排列组合所做的判断式
小弟有尝试把所有的变数和结果都设定为Double ,但是还是不行
麻烦各位大大帮小弟看一下如何才能避免溢位,十分感谢。
-----
Sent from JPTT on my Samsung SM-G975F.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.136.175.204 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1663229034.A.B5A.html
1F:推 waiter337: 弱弱的回 and 单独使用的概念我不清楚 09/16 20:20
2F:→ waiter337: 不过若只测试 Debug.Print 2 ^ 35 - 1 并不会溢位 09/16 20:21
3F:→ lightning990: 感谢回覆,因为需要搭配and 做次方的检查,所以无法 09/16 20:40
4F:→ lightning990: 单独使用 09/16 20:40
5F:推 waiter337: 抱歉 2进位运算 我不是很熟 烦请高手 09/16 20:45
6F:推 waiter337: 另外 我怀疑 要创阵列表 跑回圈 09/16 20:48
7F:推 waiter337: 设定为long看看 09/16 20:53
9F:→ waiter337: 对岸的 有查到>31 可能要改用文字记录 09/16 20:58
10F:→ waiter337: 我晚点写出来 大概就是用阵列纪录 09/16 21:17
11F:→ waiter337: 主轴是用阵列纪录0跟1 将2^35 与 2 ^ 1 两组都列出来 09/16 21:18
12F:→ waiter337: 然後用第一组阵列修改 若发现第二组阵列或第一组阵列 09/16 21:18
13F:→ waiter337: 有1 那麽第一组阵列就变成1 (2进位and逻辑) 09/16 21:19
14F:→ waiter337: 然後最後把 第一组阵列 用回圈 step-1 把字串一个一个 09/16 21:19
15F:→ waiter337: 从屁股把字一个一个提出来 用&并起来 09/16 21:21
16F:→ waiter337: 转成阵列的写法 可以参考那个网址的辗转相除法 09/16 21:21
17F:→ waiter337: 但不要用递回 直接用阵列解决 09/16 21:21
18F:→ waiter337: 补充一下 09/16 21:22
19F:→ waiter337: 第二组阵列与第一组阵列也是用回圈逐列俩俩比对有没有1 09/16 21:23
20F:→ lightning990: 感谢大大的回覆,我试了一下,目前看起来只要超过33 09/16 22:58
21F:→ lightning990: 次方就会溢位,我试着把资料限缩在30次方以内,谢谢 09/16 22:58
22F:→ lightning990: 你 09/16 22:58
23F:→ waiter337: 後来想想 也不一定要阵列 09/20 17:13
24F:→ waiter337: 只要你改成文字 1010逐个比对 然後照逻辑 看是多少 09/20 17:14
25F:→ waiter337: 也应该能得出 09/20 17:14