作者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://webptt.com/cn.aspx?n=bbs/Web_Design/M.1580723788.A.883.html
1F:→ tino1991: 应该是太长了吧 标准整数长度 Number.MIN_SAFE_INTEGER 02/03 18:32
2F:→ tino1991: 排序可以试看看 Array.sort + String.localeCompare 02/03 18:33
3F:→ jfcherng: 直接 mac addr string 比大小 02/03 23:29
4F:→ jherk: BigInt() 02/03 23:29
5F:推 LPH66: 或者反过来, 不要转成十进位, 直接用原字串比大小就好 02/03 23:39
6F:→ jfcherng: 直接 if (stringA > stringB) ... 02/03 23:41
7F:推 b85040312: 搜寻大数加法 02/04 00:51