开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
NetBeans + Linux
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
cJson (https://github.com/DaveGamble/cJSON)
问题(Question):
如果json的资料是
{
"str": "4761739001010135",
}
读取后,将字串转成数字,使用cJSON_AddNumberToObject后
如预期的得到
{
"num": 4761739001010135
}
但是遇到尾数是零时,相同的程式码就会变成科学符号
例如,如果json的资料是
{
"str": "4761739001010010"
}
结果得到 (非预期)
{
"num": 4.76173900101001e+15
}
相关程式码如下:
cJSON *pjNode = NULL;
pjNode = cJSON_GetObjectItem(pInJson, "str");
if (pjNode != NULL)
{
cJSON_AddNumberToObject(pOutJson, "num", atoll(pjNode->valuestring));
}
感觉是大数字才会发生问题,因此想请教一下
1. 为何相同的程式码,当尾数是0时,会变成科学符号呢?
2. 如何避免/修改成一般的数字,而不是科学符号呢?
麻烦了 感谢
喂入的资料(Input):
预期的正确结果(Expected Output):
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
补充说明(Supplement):