Haskell:将整数除以整数,得到Double

Haskell:将整数除以整数,得到Double,haskell,division,Haskell,Division,我想写一个Haskell函数,它接受两个整数,将它们除法,并输出一个双精度 签名应如下所示: divide :: Integer -> Integer -> Double 我想要的功能是: divide x y = x / y 我从该函数中得到的错误消息是: Couldn't match expected type ‘Double’ with actual type ‘Integer’ 如何获得此函数的正确双重结果?Haskell是一种强类型语言。这意味着不会重新进行隐式转换。

我想写一个Haskell函数,它接受两个整数,将它们除法,并输出一个双精度

签名应如下所示:

divide :: Integer -> Integer -> Double
我想要的功能是:

divide x y = x / y
我从该函数中得到的错误消息是:

Couldn't match expected type ‘Double’ with actual type ‘Integer’
如何获得此函数的正确双重结果?

Haskell是一种强类型语言。这意味着不会重新进行隐式转换。您可以先将两个数字转换为双精度,例如,使用,然后使用:

因此,您仍然可以将其转换为双精度:

Haskell是一种强类型语言。这意味着不会重新进行隐式转换。您可以先将两个数字转换为双精度,例如,使用,然后使用:

因此,您仍然可以将其转换为双精度:


什么类型的是/有?fromInteger是你的朋友。什么类型的是/有?fromInteger是你的朋友。你可以获得%的良好行为,即,正确处理太大而不能放入一个Double中的数字,但其比率足够小,反之亦然,以及将两者结合使用的良好除法:除法'::Integer->Integer->Double;除以'x y=fromRational x%y。感谢您的回答!签名来自我需要为大学做的一个例子。你可以得到%的良好行为,即正确处理太大而不能放入一个Double中但其比率足够小的数字,反之亦然。通过组合这两个除法,可以得到良好的除法类型:除法'::Integer->Integer->Double;除以'x y=fromRational x%y。感谢您的回答!签名来自我需要为大学做的一个例子。
divide :: Integer -> Integer -> Double
divide x y = fromIntegral x / fromIntegral y
import Data.Ratio((%))

divide :: Fractional a => Integer -> Integer -> a
divide x y = fromRational (x % y)
Prelude Data.Ratio> divide 5 2 :: Double
2.5