【发布时间】:2018-05-08 07:20:06
【问题描述】:
我正在使用字典创建NSData 对象,如下所示,
字典:
{
channelId = 201;
lang = EN;
reqRefNo = vZRIzNd;
storeInfo = {
clientInfo = {
deviceId = XXXXXXXXA67F488B836D19D80EC4FD8D;
};
loginLogId = XXXXXXXX5CAD4A0DA06BE2F055929856;
qrCodeInfo = {
itemDesc = "";
itemName = hahsj;
price = 106;
};
userInfo = {
storeId = 3252;
};
};
}
价格 = 106
NSData *data = [NSJSONSerialization dataWithJSONObject:paramDict options:kNilOptions error:nil];
现在我再次将其转换回 JSON 对象,如下所示,
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:data
options:kNilOptions
error:&error];
但是这次我弄错了价格。
转换后的字典
{
channelId = 201;
lang = EN;
reqRefNo = vZRIzNd;
storeInfo = {
clientInfo = {
deviceId = XXXXXXXXA67F488B836D19D80EC4FD8D;
};
loginLogId = XXXXXXXX5CAD4A0DA06BE2F055929856;
qrCodeInfo = {
itemDesc = "";
itemName = hahsj;
price = "105.9999923706055";
};
userInfo = {
storeId = 3252;
};
};
}
价格 = "105.9999923706055"
生成NSNumber的代码,
//_amountTF.text = "S$1.06";
NSString *amount = [_amountTF.text stringByReplacingOccurrencesOfString:@"S$" withString:@""];
float amt = [amount floatValue];
amt *=100;
NSNumber *num = [NSNumber numberWithFloat:amt];
谁能解释一下这背后的原因?谢谢。
【问题讨论】:
-
你能添加你用来创建字典的代码吗?
-
两种数据类型是否相同?价格 = 106;和价格=“105.9999923706055”; ?
-
@trungduc 使用 setObject forkey 方法创建的普通 NSMutableDictionary。
-
@PrashantTukadiya 在将其 NSNumber 转换为 NSData 之前,我不知道转换后会发生什么。
-
这是一个浮点精度问题。使用
double或CGFloat而不是float。
标签: ios objective-c nsdictionary nsdata nsjsonserialization