ios json 解析丟失精度

2021-09-02 18:20:42 字數 948 閱讀 6496

當json字典中含有一位及以上小數字時,在使用

nsjsonserialization方法先轉為nsdata再解析為字串時有時會出現資料誤差,**如下:

nsstring

*jsonstr = @"";

nsdata

*jsondata_ = [jsonstr datausingencoding:nsutf8stringencoding];

nserror *jsonparsingerror_ = nil;

nsdictionary

*dic=[

nsjsonserializationjsonobjectwithdata:jsondata_ options:nsjsonreadingallowfragments error:&jsonparsingerror_];

nsstring *value=dic[@"number"];

nslog

(@"value:%@ ----", value);

列印結果:2016-01-28 09:43:40.827 test[775:19343] value:81.59999999999999----

猜想可能是資料轉換時精度的問題,因此修改了一下最後解析時的**,替換了一下value的解析方法如下:

nsstring *value=[nsstring stringwithformat:@"%f",[dic[@"number"] doublevalue]];

列印結果:2016-01-28 09:50:57.627 test[958:23205] value:81.600000 ----

至少資料顯示是正常了,當然還可以叫後端開發的兄弟全部返回字串,也是可以解決這個問題的

IOS JSON資料解析 一

對於json資料,蘋果提供了nsjsonserializaiton類來解析。比如我們有乙個json檔案,那麼如下 可以獲取到json資料 nsbundle b nsbundle mainbundle nsstring path b pathforresource json oftype json n...

IOS JSON解析之JSONKit使用

將jsonkit.h和jsonkit.m拖到專案中 配置 匯入jsonkit時候需要特別的配置 fno objc arc 1 修改jsonkit.m檔案第680行,修改為object setclass array,jkarrayclass 2 修改jsonkit.m檔案第931行,修改為object...

ORACLE NUMBER丟失精度

oracle的number可以支援到38位精度。超過15位存進去,就用科學記數法表示的,而且精度丟失了。例 1234567890123456 插入後 1.23456789012346e15 123456789025587.22 插入後 123456789025587.00 補足 此處的精度丟失是,s...