Читая ответ @anton в этом ссылка Я попытался проверить, действительно ли 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
Из википедии:
остаток с плавающей запятой. Это не похоже на обычную операцию по модулю, она может быть отрицательной для двух положительных чисел. Он возвращает точное значение x–(round(x/y)·y).
Объяснение Антона неправильное, или я что-то упускаю?
nearbyint()
функция, использующая округление банкира? - person rondino   schedule 03.08.2016round()
в контексте Википедии? Вы можете отредактировать свой вопрос и добавить определение функцииround()
? - person Luis Colorado   schedule 05.08.2016