Какой тип данных вы используете для своих номеров?
Если это NSInteger или что-то в этом роде, оно близко к стандартному int, поэтому у него есть некоторые ограничения.
Например, в стандартной 64-битной архитектуре вы можете объявить long long int, который позволяет вам иметь 64-битное целое число. Если вашему умножению требуется больше места, самые левые биты могут быть усечены, что меняет ваш результат.
Вы также можете использовать некоторое long double, которое позволяет обрабатывать 80-битные числа, что увеличивает двойную точность, но все еще теряет точность для больших чисел.