本来专案需求需要判断 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