作者heavenbetula (綠草)
看板Web_Design
標題[問題] Javascript 加法不正確的問題
時間Mon Feb 3 17:56:26 2020
本來專案需求需要判斷 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