看板 Web_Design 關於我們 聯絡資訊
本來專案需求需要判斷 mac address 來做位址的大小比較, 想到的做法是直接將16進制轉為十進制 例如 mac address 為 "FF-FF-FF-FF-FF-FF" 先轉成陣列紀錄十進制 [255, 255, 255, 255, 255, 255] 再考慮十進制位數補0變成 [255000000000000000, 255000000000000, 255000000000, 255000000, 255000, 255] 但問題來了,將此陣列的所有值加起來 變成 255255255255255260 而不是正確的 255255255255255255 過去只有小數點的計算會遇到運算錯誤,但是這次都是整數,是為什麼呢? 請問有什麼解法呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.84.179 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Web_Design/M.1580723788.A.883.html
tino1991: 應該是太長了吧 標準整數長度 Number.MIN_SAFE_INTEGER 02/03 18:32
tino1991: 排序可以試看看 Array.sort + String.localeCompare 02/03 18:33
jfcherng: 直接 mac addr string 比大小 02/03 23:29
jherk: BigInt() 02/03 23:29
LPH66: 或者反過來, 不要轉成十進位, 直接用原字串比大小就好 02/03 23:39
jfcherng: 直接 if (stringA > stringB) ... 02/03 23:41
b85040312: 搜尋大數加法 02/04 00:51