Чтение ответ @anton в этом link я попытался увидеть, если на самом деле remainder(x, y)
именно x-(round(x/y)*y)
является остаток (х, у) на самом деле х - ((круглый (х/у) * у)
Запуск?. . код для значения x=5.
и y=2.
я получил:
printf("the value of remainder is %f\n",remainder(x, y));
printf("the value of remainder is %f\n",x-(round(x/y)*y));
значение остатка составляет 1,000000
значение остатка является -1,000000
От wikipedia:
с плавающей точкой остальное. Это не похоже на нормальную операцию по модулю, может быть отрицательным для двух положительных чисел. Он возвращает точный значение x- (круглый (x/y) · y).
Является ли объяснение Антона неправильным, или я что-то упускаю?
Круглый -> этаж. – deniss
Формула предполагает, что x и y являются плавающей точкой, а не целыми числами. –
@RaymondChen -_- если бы они были целыми числами, я получу правильный ответ! Без комментариев ! – rondino