rem дает следующее:
Prelude> rem 9 8
1
Мне хотелось что-то вроде этого:
Prelude> nonIntRem 9.1 8
1.0999999999999996
Я реализовал его следующим образом:
nonIntRem x y = x - (y * (fromIntegral $ truncate (x/y)))
Мои вопросы:
- Что-то вроде этого уже существует в стандартной библиотеке Haskell? Я бы предпочел использовать стандартную функцию, и я, возможно, пропустил ее.
- Если нет, есть ли более стандартное имя для этой функции на других языках? Возможно, fmod, но поведение для негативов в этом случае не похоже на мод, но, как и rem. Если нет стандартного имени, можете ли вы придумать лучшее имя для этой функции?
- Кажется, что он работает правильно, но если вы заметили проблему с этой функцией, я хотел бы узнать об этом.