本來專案需求需要判斷 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
過去只有小數點的計算會遇到運算錯誤,但是這次都是整數,是為什麼呢?
請問有什麼解法呢?
作者: tino1991 (深白) 2020-02-03 18:32:00
應該是太長了吧 標準整數長度 Number.MIN_SAFE_INTEGER排序可以試看看 Array.sort + String.localeCompare