値が 4937446359977427944 のキーを含む NSDictionary があります。その値を long long として取得しようとすると、4937446359977427968 が返されますか?
NSLog(@"value1 = %@", [dict objectForKey"MyKey"]); // prints 4937446359977427944
long long lv = [dict objectForKey:@"MyKey"] longLongValue];
NSLog(@"value2 = %lld", lv); // prints 4937446359977427968
やっている:
NSLog(@"%lld", [@"4937446359977427944" longLongValue]); // prints 4937446359977427944
下位ビットがクリアされているように見えるため、何らかの丸め問題であると想定していますが、それを停止する方法 (またはなぜ発生するのか) がわかりません。
辞書は を使用して作成されており、JSON オブジェクトには (正しく)エントリNSJSONSerialization
が含まれており、オブジェクトは正しいです。"MyKey": 4937446359977427944
dict
に保持されている値NSDictionary
は、NSDecimalNumber
舞台裏で何かがフロートに変換されていますか?