Javascript 解析浮点有舍入限制吗?我怎样才能解决这个问题?
我建立了一个将压缩数据字符串解析为JSON的系统。我用一个19位数的数字来存储ID。不幸的是,任何大于17位的数字,Javascript 解析浮点有舍入限制吗?我怎样才能解决这个问题?,javascript,math,parsefloat,Javascript,Math,Parsefloat,我建立了一个将压缩数据字符串解析为JSON的系统。我用一个19位数的数字来存储ID。不幸的是,任何大于17位的数字,parseFloat() 这会破坏整个数据字符串。我能修好这个吗 例如,8246295522085275215变为8246295522085276000。为什么会这样 如果JavaScript中的数字高于某个值,则会失去精度 根据,整数最多只能有15位(确切地说是9*10^15)。JavaScript只有一种数字类型,即IEEE 754双精度。这意味着,您的最大精度为52位,比15
parseFloat()
这会破坏整个数据字符串。我能修好这个吗
例如,8246295522085275215
变为8246295522085276000
。为什么会这样
如果JavaScript中的数字高于某个值,则会失去精度
根据,整数最多只能有15位(确切地说是9*10^15)。JavaScript只有一种数字类型,即IEEE 754双精度。这意味着,您的最大精度为52位,比15位小数位多一点
如果您需要更高的精度,则必须使用bignum库或处理字符串。尝试其中一种
1.使用字符串
2.将数字一分为二,并将较小的部分保存到数组中
3.Bignum库
4.如果可以,请使用较小的数字您没有那么多对象,对吗?然后使用以1
开头的常规递增ID。如果您想通过更改ID阻止人们检索其他对象,请添加一个包含一些随机值的附加参数,然后您仍然可以使用适当的ID(也可以在数据库中作为主键)当用户试图修改URL时,他运气不佳,因为他不知道其他项目的随机字符串。如果这是一个id,为什么还要麻烦将其视为一个数字?把它当作一根绳子