问题描述
我有这个电话号码:
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)