如何在haskell中获取数字的一部分

Nah*_*ahu 2 haskell numbers

我有这个号码:

1.89
Run Code Online (Sandbox Code Playgroud)

但我想要这部分数字

0.89
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?(哈斯克尔)

Wil*_*sem 7

如果数字的类型是 的实例RealFrac,则可以利用properFraction :: (Integral a, RealFrac b) => b -> (a, b)得到一个二元组,第一项是整数部分,第二项是浮动部分。例如:

Prelude> properFraction 1.89
(1,0.8899999999999999)
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用snd :: (a, b) -> b来获得小数部分:

Prelude> snd (properFraction 1.89)
0.8899999999999999
Run Code Online (Sandbox Code Playgroud)

如果数字为负,则整数部分和小数部分都将为负数:

Prelude> properFraction (-1.89)
(-1,-0.8899999999999999)
Run Code Online (Sandbox Code Playgroud)