参考这里
问题
公司使用雪花算法计算的主键有19位,比如:1022290185154633728
但是 WEB 端传递的主键会精度丢失
原因
JS 采用双精度存储,占用 64 bit,如图:
意义:
- 1位用来表示符号位
- 11位用来表示指数
- 52位表示尾数
因此 JS 中能精准表示的最大整数是 Math.pow(2, 53) - 1
,十进制即 9007199254740991,共计16位
这个数字也是 JS 中的 Number.MAX_SAFE_INTEGER
解决
主键交互使用 String 类型 o(╯□╰)o