我有这个号码:
1.89
Run Code Online (Sandbox Code Playgroud)
但我想要这部分数字
0.89
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?(哈斯克尔)
如果数字的类型是 的实例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)