開發平台(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):