[爆卦]vba integer溢位是什麼?優點缺點精華區懶人包

為什麼這篇vba integer溢位鄉民發文收入到精華區:因為在vba integer溢位這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者capoer (不睡覺先生)看板Office標題[算表] VBA 大數值位元運算溢位問題時間Su...


軟體: 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://www.ptt.cc/bbs/Office/M.1452433076.A.290.html
lilyhu: 宣告變數的時候把As Long改成As Varient 01/10 21:52
lilyhu: 如果不是非常清楚變數型別就不要宣告或設定成Varient 01/10 21:53
capoer: 改成variant後還是發生溢位的問題 01/10 21:56
soyoso: 先將lngleft和lngright數值轉二進位 01/10 22:35
soyoso: http://imgur.com/c7j0RuU 測試可導出原文的結果 01/10 22:35
lilyhu: 我在Excel 2013把兩變數都宣告成LongLong可以直接執行 01/10 23:08
soyoso: 我同原po http://imgur.com/IRZEt3Q 溢位,測試版本2016 01/10 23:22
soyoso: 32位元 01/10 23:22
soyoso: 另測試了2003,2007,2010,32位元版本都產生溢位了 01/10 23:28
capoer: 感謝soyoso大大,看來只能用字串硬上了,感謝提供 code 01/11 01:08
capoer: to lilyhu:2010沒有LongLong,即使改成Currency還是溢位了 01/11 01:10
soyoso: longlong於2010版本有,但限64位元版本 01/11 08:33
soyoso: http://imgur.com/1cv141B 01/11 08:35
soyoso: 剛測試了office2010 64位元,http://imgur.com/MjcFNAf 01/11 08:38

你可能也想看看

搜尋相關網站