當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...