当我尝试将real转换为这样的int时,为什么会出现错误?
fun stuff a =
Real.toInt a
错误:
Error-Can't unify IEEEReal.rounding_mode with real (Different type constructors) Found near stuff
(0.0)
答案 0 :(得分:4)
也许您忽略了Real.toInt : IEEEReal.rounding_mode -> real -> int
,即采用指定how rounding is made的附加参数。如果您不想指定此额外参数,例如像
fun round x = Real.toInt IEEEReal.TO_NEAREST x
你可以使用其中一个功能
Real.floor : real -> int
,它假定为IEEEReal.TO_NEGINF
,Real.ceil : real -> int
,它假定为IEEEReal.TO_POSINF
,Real.trunc : real -> int
,假定为IEEEReal.TO_ZERO
或Real.round : real -> int
,它假定为IEEEReal.TO_NEAREST
。有趣的事实:函数Real.toInt
是actually defined in terms of these four functions。