Как найти модуль двух значений uint64

Довольно простой вопрос на самом деле. У меня есть два значения uint64. Я хочу разделить два числа и получить остаток.

 uint64 number1 = 36556800;
 uint64 number2 = 59325441;
 uint64 result = number1 % number2;
 NSLog(@"Result: %lld", result);

Приведенный выше код всегда печатает значение number1 (36556800).

РЕДАКТИРОВАТЬ: я понимаю, что число 1 меньше числа 2. При делении этих двух чисел получается дробь. Я хочу захватить эту фракцию. Итак, в моем примере:

 36556800 / 59325441 = 0.6162

Как мне получить 6162 в переменной? При целочисленном делении дробь отбрасывается, так что не следует ли мне использовать оператор модуля?


person Carter    schedule 15.10.2012    source источник
comment
Ну это просто: номер1 ‹ номер2. =› используя оператор по модулю, вы всегда получите число 1 в качестве остатка, так как результат деления меньше 1.   -  person Matthieu Riegler    schedule 16.10.2012


Ответы (1)


Сколько раз 59325441 входит в число 36556800?

Ноль раз, потому что 59325441 больше, чем 36556800.

Сколько останется, если из 36556800 вычесть 0 * 59325441?

36556800 - 0 * 59325441 == 36556800

Следовательно

36556800 % 59325441 == 36556800

Ваш код печатает правильный ответ. Если вы ожидали другого ответа, отредактируйте свой вопрос, включив в него ожидаемый ответ и объяснив, почему вы его ожидали.

ОБНОВИТЬ

Основываясь на вашем пересмотренном вопросе, похоже, вы хотите преобразовать свои числа в double перед делением:

double fraction = (double)number1 / (double)number2;
NSLog(@"fraction = %.4f", fraction);

Обратите внимание, что double не может точно представлять все целые числа больше 253.

person rob mayoff    schedule 15.10.2012
comment
Спасибо, Роб.. Я начинаю понимать. Позвольте мне перефразировать мой вопрос для вас. - person Carter; 16.10.2012