%
не определен. modulo
работает только с целыми числами. Я хочу что-то, что соответствует fmod modulo/c javascript.Как выполнить операцию модуляции с плавающей запятой в Схеме?
ответ
Вот Javascript эквивалент, я считаю, где п = дивиденд, d = делитель:
(let ((nOverD (/ n d)))
(let ((q (if (> nOverD 0.0) (floor nOverD) (ceiling nOverD))))
(- n (* d q))))
Я не знаю схему, но математически вы могли бы сделать что-то вроде:
rem = num - trunc(num/mod) * mod;
Таким образом, для ряда как 2.5 мод 2 вы получите:
2.5 - trunc(2.5/2) * 2
= 2.5 - trunc(1.25) * 2
= 2.5 - 1 * 2
= 2.5 - 2
= 0.5
flonum библиотека определяет flmod
, который делает то, что вы хотите. В экспериментальной схеме:
(require rnrs/arithmetic/flonums-6)
(flmod pi (sqrt 2))
Если ваша цель состоит в том, чтобы нормализовать угол, чтобы соответствовать между -л и я, то вы можете сделать это следующим образом:
(angle (make-polar 1 x))
В противном случае, вы можете масштабировать ваши доводы:
(define (mod* x y)
(let* ((pi (* 4 (atan 1)))
(c (/ y pi))
(result (angle (make-polar 1 (/ x c)))))
(* (+ result (if (negative? result) pi 0)) c)))
Я не уверен, как функция должна вести себя для отрицательных аргументов, поэтому я не рассматривал их.
mod
функция, кажется, принимает целые, рациональные и числа с плавающей точкой (например, в миниатюрной схеме Chez):
> (mod 10 4.5)
1.0
> (mod 5.5 1.4)
1.3000000000000007
> (mod 5.5 2/3)
0.16666666666666696
Если вы хотите операции, которые только принимают число с плавающей точкой, называется «Вещественные числа» в схема и вы используете совместимые схемы r6rs, есть куча операций Вещественных чисел определенная в библиотеке, в том числе flmod
, например:
> (flmod 5. 4.)
1.0
> (flmod 5. 4.5)
0.5
> (flmod 10. 4.5)
1.0
> (flmod 10 4.5)
Exception in flmod: 10 is not a flonum
выше был запущен в схеме Chez.
Для Вещественные числа операций, смотрите раздел 11.3 на стр 46 из [1]
- 1. Неточности с плавающей запятой
- 2. Как выполнить вычисления с плавающей запятой в python?
- 3. Калькулятор с плавающей запятой
- 4. Как выполнить вычисления с плавающей запятой с целыми числами
- 5. Формат форматирования с плавающей запятой
- 6. Как выполнить unittest для выходов с плавающей запятой? - питон
- 7. проблема с плавающей запятой
- 8. JavaScript с плавающей запятой
- 9. Арифметика с плавающей запятой
- 10. Проблемы с плавающей запятой
- 11. Нормализовать с плавающей запятой
- 12. Ошибки с плавающей запятой
- 13. Кодирование с плавающей запятой
- 14. Умножение с плавающей запятой
- 15. XPath с плавающей запятой?
- 16. x64 с плавающей запятой
- 17. Awk чисел с плавающей запятой
- 18. Плагин с плавающей запятой
- 19. точность с плавающей запятой
- 20. аномалия с плавающей запятой
- 21. Перемножается с плавающей запятой?
- 22. Переполнение с плавающей запятой
- 23. Калькулятор с плавающей запятой
- 24. seq - неверный аргумент аргумента с плавающей запятой
- 25. WxSlider с плавающей запятой?
- 26. Округление с плавающей запятой
- 27. с плавающей запятой в Python
- 28. C++ проблемы с плавающей запятой
- 29. с плавающей запятой в verilog
- 30. Косинус в плавающей запятой
Вы задаете схему конкретных вопросов здесь; пожалуйста, держите свои теги в минимальном –