关于雪花算法JS数值精度丢失的问题

在使用雪花算法(SnowFlake)的时候,产生18位的Long类型数值。
如: 668565260419989504,在JS中变为 668565260419989500

分析

JS的基础类型Number,遵循IEEE 754规范,采用双精度存储(double precision),具有53位有效数字精度,并总共占用64 bit。默认模式是最近舍入(Round to Nearest)。
不超过Math.pow(2, 53) = 9007199254740992(16位) 不会丢失精度。

处理

// Jackson
@JsonSerialize(using = ToStringSerializer.class)
private long id;

// FastJson
@JSONField(serializeUsing = ToStringSerializer.class)
private long id;

你可能感兴趣的:(雪花算法,java,fastjson,jackson,javascript)