2015-01-10 4 views
0

Я использую NSExpression для делать некоторые вычисления, но перенастройки неверное значение, если значение входного сигнала велики, скажем, например,NSExpression возвращает неправильное значение

например,

NSString *equation = @"9999999999999 * 9999999999999" 
NSExpression *expression = [NSExpression expressionWithFormat:equation]; // 
id result = [expression expressionValueWithObject:nil context:nil]; //result is "-2537784290115403775" 

Если уравнение было бы @ "9 * 9", затем он возвращается 18. Почему оно возвращает неправильное значение, если вход больше.

Пожалуйста, исправьте меня, если я неправильно понял.

ответ

0

Я думаю, это потому, что это связано с тем, что ваш расчет приводит к числу, которое не может быть сохранено в
64 bit data type. A 64 bit тип данных подписанный int тип данных может хранить только номера до -2^63 до 2^63-1 Результат вашего выражения, очевидно, превышает максимальный предел.

Смежные вопросы