jsoncpp浮點型丟失問題

2021-10-20 12:28:46 字數 401 閱讀 7501

定義的浮點型再寫到cpp的時候會多出很多999,

比如原始資料是 12.8356

json檔案輸出的資料是12.8355999999999

這裡的原因是因為jsoncpp官方問題參看這篇

解決方式就是把浮點型轉成字元型。

為了避免這種情況,查到乙個函式

#include std::string doubletostring(const double value, unsigned int precisionafterpoint)

doubletostring(這裡輸入double,精確度)

注意精確度指的是總共幾位數,而不是精確到小數點後幾位。

比如12.34的精確度是4,而不是2。

參考這篇

iOS解析json 浮點型資料,精度丟失問題

服務端傳遞回來的是 保留小數點兩位的浮點型,ios端解析後,發現 取出欄位的doublevalue後 精度丟失,小數點後多了很多位 原值 71.20 解析後 71.199997 複製 原始資料 複製 import nsnumbertest.h nsstring const kbigdecimalnu...

浮點型資料精度丟失例項詳解

最近在學習資料型別的時候,遇到了浮點型資料精度丟失的問題,不是很理解,在這裡整理一下。將乙個十進位制浮點數轉變為二進位制,可以整數部分和小數部分分開來看。整數部分和十進位制整型資料轉二進位制的方法一樣,採用 除2取餘,逆序排列 法。具體做法是 用2去除十進位制整數,可以得到乙個商和餘數 再用2去除商...

浮點數精度丟失問題

c 中的浮點數,分單精度 float 和雙精度 double float 是 system.single 的別名,介於 3.402823e38 和 3.402823e38 之間的32位數字,符合二進位制浮點演算法的 iec 60559 1989 ieee 754 標準 double 是 system...