Sim*_*mon 9 javascript floating-point json numbers
我的问题很简单,但我不确定是否有使用JSON.parse的"原生"解决方案.
我从API 收到这个字符串:
{ "key" : -922271061845347495 }
Run Code Online (Sandbox Code Playgroud)
当我在这个字符串上使用JSON.parse时,它变成了这个对象:
{ "key" : -922271061845347500 }
Run Code Online (Sandbox Code Playgroud)
如您所见,解析在数字太长时停止(您可以在此处检查此行为).它只有15个确切的数字,最后一个是四舍五入的,后面的那些被设置为0.是否有一个"原生"解决方案来保持确切的值?(这是一个ID所以我不能围绕它)
我知道我可以使用正则表达式来解决这个问题,但如果它存在,我宁愿使用"原生"方法.
Sal*_*n A 16
您假设解析在某些数字后停止不正确.
它在这里说:
在JavaScript中,所有数字都是浮点数.JavaScript使用标准的8字节IEEE浮点数字格式,这意味着范围来自:
±1.7976931348623157 x 10 308 - 非常大,±5 x 10 -324 - 非常小.
由于JavaScript使用浮点数,因此只能保证以下整数的准确性:-9007199254740992(-2 53)和9007199254740992(2 53)
您的数字位于"准确"范围之外,因此它将转换为最接近的JavaScript编号.任何评估此数字的尝试(使用JSON.parse,eval,parseInt)都会导致数据丢失.因此,我建议您将密钥作为字符串传递.如果您不控制API,请提交功能请求.
| 归档时间: |
|
| 查看次数: |
5011 次 |
| 最近记录: |