非整数的模数/余数函数

时间:2012-12-25 05:07:49

标签: haskell floating-point modulo

rem给出了这个:

Prelude> rem 9 8
1

我想要这样的东西:

Prelude> nonIntRem 9.1 8
1.0999999999999996

我实现了这样:

nonIntRem x y = x - (y * (fromIntegral $ truncate (x/y)))

我的问题是:

  1. 标准的Haskell库中是否已存在类似的内容?我更喜欢使用标准功能,我可能错过了它。
  2. 如果没有,这个功能在其他语言中是否有更标准的名称?也许fmod,但在这种情况下负面的行为不像mod,而是像rem一样。如果没有标准名称,您能想到这个功能的更好名称吗?
  3. 它似乎运作正常,但如果您发现此功能有问题,我想了解它。

1 个答案:

答案 0 :(得分:18)

您之后的功能是来自Data.Fixed的{​​{3}}。