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

问题描述

我有这个电话号码:

1.89

但是我想要这部分数字

0.89

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

解决方法

如果数字的类型是RealFrac的实例,则可以使用properFraction :: (Integral a,RealFrac b) => b -> (a,b)获得一个2元组,其中第一个元素为整数部分,第二个元素为浮点部分。例如:

Prelude> properFraction 1.89
(1,0.8899999999999999)

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

Prelude> snd (properFraction 1.89)
0.8899999999999999

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

Prelude> properFraction (-1.89)
(-1,-0.8899999999999999)