C - пол двойных модулей целых чисел - PullRequest
1 голос
/ 28 августа 2010

Мне нужно сделать следующее уравнение пол (е% 100000), где е является двойным.Я знаю, что мод принимает только значения int, как мне добиться такого же результата?

Спасибо

Ответы [ 4 ]

3 голосов
/ 28 августа 2010

использование fmod

3 голосов
/ 28 августа 2010

Используйте функцию fmod() вместо %. Он принимает double параметры и возвращает double результат.

3 голосов
/ 28 августа 2010

Почему бы вам сначала не взять слово, потом мод, т.е.floor(e) % 100000?

Возможно, я неправильно понял, чего вы пытаетесь достичь.Не могли бы вы привести пример ожидаемого ввода и вывода?

0 голосов
/ 28 августа 2010

Вы можете использовать деление, чтобы сделать эквивалент по модулю:

double e = 1289401004400.589201;
const double divisor = 100000.0;
double remainder = e - floor(e / divisor) * divisor;
double result = floor(remainder);
printf("%f\n", result);

Это печатает

4400.000000

Конечно, это многомедленнее любого встроенного по модулю ...

Вы также можете просто использовать fmod, как предложил Андерс К.:)

Редактировать

Исправлена ​​ссылка на std :: cout (C ++) для использования printf (C).Исправлено изменение выхода.Теперь это чисто C.

...