我有以下代码:
var str = "0x4000000000000000"; //4611686018427387904 decimal
var val = parseInt(str);
alert(val);
Run Code Online (Sandbox Code Playgroud)
我得到这个值:" 4611686018427388000
",这是0x4000000000000060
我想知道JavaScript是否错误处理64位整数还是我做错了什么?
我的问题很简单,但我不确定是否有使用JSON.parse的"原生"解决方案.
我从API 收到这个字符串:
{ "key" : -922271061845347495 }
Run Code Online (Sandbox Code Playgroud)
当我在这个字符串上使用JSON.parse时,它变成了这个对象:
{ "key" : -922271061845347500 }
Run Code Online (Sandbox Code Playgroud)
如您所见,解析在数字太长时停止(您可以在此处检查此行为).它只有15个确切的数字,最后一个是四舍五入的,后面的那些被设置为0.是否有一个"原生"解决方案来保持确切的值?(这是一个ID所以我不能围绕它)
我知道我可以使用正则表达式来解决这个问题,但如果它存在,我宁愿使用"原生"方法.
我正在尝试使用 json.push_back 调用将 64 位整数数据推送到 JSONNode
uint64_t myHigh = 0x10;
uint64_t myLow = 0x12;
uint64_t myFinal = 0;
myFinal = (myHigh << 32) | myLow ;
std::cout << "val = 0x" << std::hex << myFinal << "\n";-----(1)
JSONNode jvData;
jvData.push_back(JSONNode("value",myFinal));
std::cout<<jvData.write();--------------------------(2)
Run Code Online (Sandbox Code Playgroud)
cout (1) 给出值 0xa0000000c cout (2) 显示值 12。
我预计 cout (2) 值为 42949672972 但似乎没有按预期工作
Json支持64位int吗?