最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JsonCpp中double的問題解決

 更新時(shí)間:2022年02月23日 15:25:35   作者:alibaba00  
本文主要介紹了JsonCpp中double的問題解決,文中通過示例代碼介紹的非常詳細(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ù)精度問題和插入輸出順序問題

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

官方不支持指定小數(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ù)字精度問題,可以考慮在C++中轉(zhuǎn)為自己需求的精度,然后再當(dāng)作字符串放到j(luò)son中,至于之后的解析,讀字符串再轉(zhuǎn)數(shù)字即可;

順序問題,兩個(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的問題解決的文章就介紹到這了,更多相關(guān)JsonCpp double內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Opencv3.4.0實(shí)現(xiàn)視頻中的幀保存為圖片功能

    Opencv3.4.0實(shí)現(xiàn)視頻中的幀保存為圖片功能

    這篇文章主要為大家詳細(xì)介紹了Opencv3.4.0實(shí)現(xiàn)視頻中的幀保存為圖片功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C語言中fchdir()函數(shù)和rewinddir()函數(shù)的使用詳解

    C語言中fchdir()函數(shù)和rewinddir()函數(shù)的使用詳解

    這篇文章主要介紹了C語言中fchdir()函數(shù)和rewinddir()函數(shù)的使用詳解,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • C++ GDI實(shí)現(xiàn)圖片格式轉(zhuǎn)換

    C++ GDI實(shí)現(xiàn)圖片格式轉(zhuǎn)換

    GDI+(Graphics Device Interface Plus)是一種用于圖形繪制和圖像處理的應(yīng)用程序編程接口(API),在Windows平臺(tái)上廣泛使用,本文就來介紹一下如何使用GDI實(shí)現(xiàn)圖片格式轉(zhuǎn)換吧
    2023-12-12
  • C語言實(shí)現(xiàn)linux網(wǎng)卡檢測(cè)精簡(jiǎn)版

    C語言實(shí)現(xiàn)linux網(wǎng)卡檢測(cè)精簡(jiǎn)版

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)linux網(wǎng)卡檢測(cè)的精簡(jiǎn)版,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • C/C++詳解實(shí)現(xiàn)二層轉(zhuǎn)發(fā)

    C/C++詳解實(shí)現(xiàn)二層轉(zhuǎn)發(fā)

    數(shù)據(jù)鏈路層是開放系統(tǒng)互連 (OSI) 模型中的第二層,該層用于通過 LAN 等單一網(wǎng)絡(luò)進(jìn)行通信的節(jié)點(diǎn),第二層數(shù)據(jù)包不能從一個(gè)網(wǎng)絡(luò)傳輸?shù)搅硪粋€(gè)網(wǎng)絡(luò)。而二層轉(zhuǎn)發(fā)是根據(jù)報(bào)文的目的MAC直接進(jìn)行轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)過程中不用對(duì)報(bào)文的頭部做任何的修改
    2022-05-05
  • Windows下CMake的下載與安裝過程

    Windows下CMake的下載與安裝過程

    CMake是一個(gè)跨平臺(tái)的安裝(編譯)工具,可以用簡(jiǎn)單的語句來描述所有平臺(tái)的安裝(編譯過程),這篇文章主要介紹了Windows下CMake的下載與安裝,需要的朋友可以參考下
    2022-02-02
  • C語言金幣陣列問題解決方法

    C語言金幣陣列問題解決方法

    這篇文章主要介紹了C語言金幣陣列問題解決方法,主要涉及數(shù)組的靈活運(yùn)算,是一類非常經(jīng)典的算法,需要的朋友可以參考下
    2014-09-09
  • C語言新建臨時(shí)文件和臨時(shí)文件名的方法

    C語言新建臨時(shí)文件和臨時(shí)文件名的方法

    這篇文章主要介紹了C語言新建臨時(shí)文件和臨時(shí)文件名的方法,分別是mkstemp()函數(shù)和mktemp()函數(shù)的使用,需要的朋友可以參考下
    2015-08-08
  • C++中utf8字符串和gbk字符串的轉(zhuǎn)換方法

    C++中utf8字符串和gbk字符串的轉(zhuǎn)換方法

    文章介紹了C++中UTF-8字符串和GBK字符串之間的轉(zhuǎn)換,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • C語言 條件判斷詳細(xì)介紹

    C語言 條件判斷詳細(xì)介紹

    本文主要講解C語言 條件判斷,這里整理了相關(guān)資料,詳細(xì)說明了判斷語句知識(shí)要點(diǎn),希望能幫助學(xué)習(xí)C語言的同學(xué)
    2016-08-08

最新評(píng)論

梓潼县| 安陆市| 陆丰市| 汉川市| 怀仁县| 城口县| 杭锦后旗| 东城区| 会同县| 漳平市| 托克托县| 广宁县| 盱眙县| 健康| 大田县| 香格里拉县| 彭水| 遂宁市| 毕节市| 皮山县| 黄浦区| 丁青县| 漠河县| 天台县| 泰安市| 霍城县| 社旗县| 石阡县| 三穗县| 宝鸡市| 洛川县| 丽江市| 黑水县| 龙川县| 兴山县| 习水县| 永福县| 宣威市| 江津市| 项城市| 建平县|