[算表] 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