Haskell - 如何检查数字是否为Double/Float?

MMM*_*MMM 1 floating-point haskell integer

我想做像:

x `mod` 1.0 == 0 // => int
Run Code Online (Sandbox Code Playgroud)

但似乎mod仅适用于int ... help!编辑:我试图检查给定的数字是否为三角形,http://en.wikipedia.org/wiki/Triangle_number所以我的想法是检查n1是否为Int ...

(n*(n + 1))/ 2 = s => n1 =( - 1 + sqrt(1 + 8s))/ 2

sol*_*ack 7

要确定是否与Haskell中的某个FloatDouble无法区分,请一起Integer使用.就像是:floorceiling

if floor n == ceiling n
  then "It was some integer."
  else "It's between integers."
Run Code Online (Sandbox Code Playgroud)

可能还有一些奇特的东西可以用浮点数表示二进制,由RealFloat类型类公开:

http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#t%3ARealFloat