[問題] Javascript 加法不正確的問題

看板Web_Design作者 (綠草)時間4年前 (2020/02/03 17:56), 編輯推噓2(205)
留言7則, 5人參與, 4年前最新討論串1/1
本來專案需求需要判斷 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

02/03 18:32, 4年前 , 1F
應該是太長了吧 標準整數長度 Number.MIN_SAFE_INTEGER
02/03 18:32, 1F

02/03 18:33, 4年前 , 2F
排序可以試看看 Array.sort + String.localeCompare
02/03 18:33, 2F

02/03 23:29, 4年前 , 3F
直接 mac addr string 比大小
02/03 23:29, 3F

02/03 23:29, 4年前 , 4F
BigInt()
02/03 23:29, 4F

02/03 23:39, 4年前 , 5F
或者反過來, 不要轉成十進位, 直接用原字串比大小就好
02/03 23:39, 5F

02/03 23:41, 4年前 , 6F
直接 if (stringA > stringB) ...
02/03 23:41, 6F

02/04 00:51, 4年前 , 7F
搜尋大數加法
02/04 00:51, 7F
文章代碼(AID): #1UD-vCY3 (Web_Design)