还记得之前写过的一篇博客,egret游戏引擎入门(六) 在说到其中的一个参数userID
的位数为18位,在传输过来的时候丧失精准度的问题。当时我跟几个小伙伴对这个问题纠结了一晚上,其实这个问题在犀牛书中就有提到过(第6版,p34,3.1数字)。
按照JavaScript中的数字格式,能够表示的整数范围是从
-9007199254740992 ~ 9007199254740992
,包含边界值。如果使用了超过此范围的整数,则无发保证低位数字的精准度。
从上面这段文字中我们可以看到,JavaScript语言只能保证数字的长度在16位以内,如果超过16位,则超出的部分会丧失精准度。
从这里可以看出,基础真的好重要呀,所以近期内会重读犀牛书、高程之类的。