¿Por qué longLongValue está devolviendo el valor incorrecto?
Tengo un NSDictionary que contiene una clave con un valor de 4937446359977427944. Intento obtener el valor de la misma como un valor largo y obtengo 4937446359977427968 de nuevo.
NSLog(@"value1 = %@", [dict objectForKey"MyKey"]); // prints 4937446359977427944
long long lv = [dict objectForKey:@"MyKey"] longLongValue];
NSLog(@"value2 = %lld", lv); // prints 4937446359977427968
Obra:
NSLog(@"%lld", [@"4937446359977427944" longLongValue]); // prints 4937446359977427944
Supongo que es una especie de problema de redondeo, ya que los bits más bajos parecen estar limpios, simplemente no sé cómo detenerlo (o por qué está sucediendo).
El diccionario se está creando usandoNSJSONSerialization
y el objeto JSON contiene (correctamente) un"MyKey": 4937446359977427944
entrada y ladict
El objeto es correcto.
El valor que se mantiene en elNSDictionary
es unNSDecimalNumber
¿Se está convirtiendo algo a un flotador detrás de escena?