Haskell没有二重积分的例子

Haskell没有二重积分的例子,haskell,double,rounding,integral,Haskell,Double,Rounding,Integral,我正在尝试使用Haskell对变量进行四舍五入 r :: Double -> Double r x = round (x) 试图编译这个,我得到以下错误 没有因使用“round”而产生的(整数双精度)实例 我怎样才能解决这个问题?谢谢大家! 这是合乎逻辑的,因为作为……实例的类型通常是“整型的”。因此,这意味着它的行为类似于一个整数。Integral的示例有Integer,Int,Word8,等等。Float,Double等不是整数,如错误所述 您可以使用将Integral类型的内容转换

我正在尝试使用Haskell对变量进行四舍五入

r :: Double -> Double
r x = round (x)
试图编译这个,我得到以下错误

没有因使用“round”而产生的(整数双精度)实例


我怎样才能解决这个问题?谢谢大家!

这是合乎逻辑的,因为作为……实例的类型通常是“整型的”。因此,这意味着它的行为类似于一个
整数
Integral
的示例有
Integer
Int
Word8
,等等。
Float
Double
等不是整数,如错误所述

您可以使用将
Integral
类型的内容转换为
Num
erical类型:

r :: Double -> Double
r = fromIntegral . round

不,这不行。Double是一个frac,所以我不必使用fromIntegral将其声明为1,是吗?但是,它不起作用。“我得到了和以前一样的错误。@longroad:那么为什么前奏曲要用示例输出演示呢?”。
Double
是许多类型类的实例:
Enum
Num
Eq
Floating
,等等。因此
from integral
将专用于
Double
。您得到相同错误的事实表明,在其他地方存在另一个问题,触发相同(或非常类似)的错误消息。这是我文件中的全部代码:
r::Double->Double rx=round(frompintegral(x))
,我在GHCi>GHCi,版本8.6.5:?为获取帮助[1/1]编译Main(\test.hs,expressed)test.hs:12:7:错误:*在表达式中使用
round'*时没有出现(整数双精度)的实例,该表达式用于
r的表达式:round(frompintegral(x)):rx=round(frompintegral(x))| 12 | rx=round(frompintegral(x))| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^。
Prelude> r 14.25
14.0