關於雪花算法JS數值精度丟失的問題

在使用雪花算法(SnowFlake)的時候,產生18位的Long類型數值。
如: 668565260419989504,在JS中變爲 668565260419989500java

分析

JS的基礎類型Number,遵循IEEE 754規範,採用雙精度存儲(double precision),具備53位有效數字精度,並總共佔用64 bit。默認模式是最近舍入(Round to Nearest)。
不超過Math.pow(2, 53) = 9007199254740992(16位) 不會丟失精度。算法

處理

// Jackson
@JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
private long id;

// FastJson
@JSONField(serializeUsing = com.alibaba.fastjson.serializer.ToStringSerializer.class)
private long id;
相關文章
相關標籤/搜索