欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JsonCpp中double的問(wèn)題解決

 更新時(shí)間:2022年02月23日 15:25:35   作者:alibaba00  
本文主要介紹了JsonCpp中double的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

json文件里的值

double類型的值

程序代碼

new_item["Voltage"] = 8.622;
new_item["Current"] = 8.63456;
new_item["Energy"] = 8.234234;

程序運(yùn)行結(jié)果

明顯值發(fā)生了變化

Jsoncpp的json_write.cpp中

std::string valueToString(double value, bool useSpecialFloats, unsigned int precision) {
  // Allocate a buffer that is more than large enough to store the 16 digits of
  // precision requested below.
  char buffer[32];
  int len = -1;

  char formatString[6];
  sprintf(formatString, "%%.%dg", precision);

  // Print into the buffer. We need not request the alternative representation
  // that always has a decimal point because JSON doesn't distingish the
  // concepts of reals and integers.
  if (isfinite(value)) {
    len = snprintf(buffer, sizeof(buffer), formatString, value);
  } else {
    // IEEE standard states that NaN values will not compare to themselves
    if (value != value) {
      len = snprintf(buffer, sizeof(buffer), useSpecialFloats ? "NaN" : "null");
    } else if (value < 0) {
      len = snprintf(buffer, sizeof(buffer), useSpecialFloats ? "-Infinity" : "-1e+9999");
    } else {
      len = snprintf(buffer, sizeof(buffer), useSpecialFloats ? "Infinity" : "1e+9999");
    }
    // For those, we do not need to call fixNumLoc, but it is fast.
  }
  assert(len >= 0);
  fixNumericLocale(buffer, buffer + len);
  return buffer;
}

這里sprintf(formatString, “%%.%dg”, precision);的結(jié)果是“%.17g”。是輸出17位的有效數(shù)字。不足的補(bǔ)足17位。

ps:JsonCpp的小數(shù)精度問(wèn)題和插入輸出順序問(wèn)題

直接說(shuō)吧,這兩個(gè)問(wèn)題無(wú)法解決,如下:

官方不支持指定小數(shù)位數(shù),double默認(rèn)位寬為17位,如:"value" : 7.0999999999999996,
官方不支持按插入順序輸出,而是按照key的字母排序輸出的,不管你什么順序插入,下面的都是這樣的順序輸出的:

"avg_abcdd              " : 1.1632640000000014,
"avg_pxczzczxczxd       " : 7.0999999999999996,
"avg_shczxcdize         " : 802000.0,
"deviccxz               " : "shebei25",
"sh323423fd             " : 1420,
"vcxzcasdasdadczco      " : 231

個(gè)人應(yīng)急想法 

數(shù)字精度問(wèn)題,可以考慮在C++中轉(zhuǎn)為自己需求的精度,然后再當(dāng)作字符串放到j(luò)son中,至于之后的解析,讀字符串再轉(zhuǎn)數(shù)字即可;

順序問(wèn)題,兩個(gè)想法:

1)不要用key,采用append的形式,也就是將每個(gè)條目放在一個(gè)容器中

Json::Value res;?
?
std::string = entry_str;?
?
entry_str.append("zhangsan,123");?
entry_str.append("abc,2596");?
.......?
?
res["entry"] = entry_str;

2)那就按名字命令咯,順應(yīng)規(guī)則,2333333

到此這篇關(guān)于JsonCpp中double的問(wèn)題解決的文章就介紹到這了,更多相關(guān)JsonCpp double內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用C++ R3層斷鏈實(shí)現(xiàn)模塊隱藏功能

    利用C++ R3層斷鏈實(shí)現(xiàn)模塊隱藏功能

    在R3層的模塊隱藏,我們需要做的就是將其該鏈表斷鏈,將某一模塊從這個(gè)雙向鏈表中摘除,這樣再調(diào)用傳統(tǒng)的API時(shí)就會(huì)搜索不到。本文重點(diǎn)給大家介紹利用C++ R3層斷鏈實(shí)現(xiàn)模塊隱藏功能,感興趣的朋友一起看看吧
    2019-10-10
  • C++實(shí)現(xiàn)LeetCode(6.字型轉(zhuǎn)換字符串)

    C++實(shí)現(xiàn)LeetCode(6.字型轉(zhuǎn)換字符串)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(6.字型轉(zhuǎn)換字符串),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 詳解C語(yǔ)言fscanf函數(shù)讀取文件教程及源碼

    詳解C語(yǔ)言fscanf函數(shù)讀取文件教程及源碼

    這篇文章主要為大家介紹了詳解C語(yǔ)言算法fscanf讀取文件示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • C++炸彈小游戲示例代碼

    C++炸彈小游戲示例代碼

    這篇文章主要介紹了C++炸彈小游戲,本文給大家分享游戲代碼,代碼簡(jiǎn)單易懂通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • C++實(shí)現(xiàn)PatchMatch圖像修復(fù)算法

    C++實(shí)現(xiàn)PatchMatch圖像修復(fù)算法

    這篇文章主要介紹了C++實(shí)現(xiàn)PatchMatch圖像修復(fù)算法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • C語(yǔ)言中的字符(char)詳細(xì)講解

    C語(yǔ)言中的字符(char)詳細(xì)講解

    本篇文章主要介紹C語(yǔ)言中char的知識(shí),并附有代碼實(shí)例,以便大家在學(xué)習(xí)的時(shí)候更好的理解,有需要的可以看一下
    2016-07-07
  • c++中深淺拷貝以及寫(xiě)時(shí)拷貝的實(shí)現(xiàn)示例代碼

    c++中深淺拷貝以及寫(xiě)時(shí)拷貝的實(shí)現(xiàn)示例代碼

    這篇文章主要給大家介紹了關(guān)于c++中深淺拷貝以及寫(xiě)時(shí)拷貝實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • 用C++面向?qū)ο蟮姆绞絼?dòng)態(tài)加載so的方法

    用C++面向?qū)ο蟮姆绞絼?dòng)態(tài)加載so的方法

    下面小編就為大家?guī)?lái)一篇用C++面向?qū)ο蟮姆绞絼?dòng)態(tài)加載so的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • 利用Matlab繪制地圖的超詳細(xì)教程

    利用Matlab繪制地圖的超詳細(xì)教程

    worldmap和usamap是axesm的子類,worldmap是用于生成世界地圖坐標(biāo)區(qū)域,usamap用于生成美國(guó)地圖坐標(biāo)區(qū)域。本文將詳細(xì)為大家介紹如何利用這兩個(gè)函數(shù)繪制地圖,需要的可以參考一下
    2022-02-02
  • 如何為Qt視圖中的文字實(shí)現(xiàn)彩虹漸變效果

    如何為Qt視圖中的文字實(shí)現(xiàn)彩虹漸變效果

    這篇文章主要給大家介紹了關(guān)于如何為Qt視圖中的文字實(shí)現(xiàn)彩虹漸變效果的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Qt具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評(píng)論