Sml 如何将实数转换为整数?

Sml 如何将实数转换为整数?,sml,smlnj,Sml,Smlnj,假设我有0.0,如何将其转换为0 我知道我可以使用Real.fromInt(0)来做相反的事情(0->0.0),但是Real到Int呢 在SML文档中,我读到了一个函数toInt,但是没有示例,所以我可能用错了方法 我试过这个: Real.toInt(a) vala Real.toInt 两者都是错误的…Real.toInt具有类型IEEEReal.rounding\u mode->Real->int,因此需要指定舍入模式。例如: Real.toInt IEEEReal.TO_NEAREST 1

假设我有0.0,如何将其转换为0

我知道我可以使用
Real.fromInt(0)
来做相反的事情(0->0.0),但是
Real
Int

在SML文档中,我读到了一个函数
toInt
,但是没有示例,所以我可能用错了方法

我试过这个:

Real.toInt(a)

vala Real.toInt


两者都是错误的…

Real.toInt
具有类型
IEEEReal.rounding\u mode->Real->int
,因此需要指定舍入模式。例如:

Real.toInt IEEEReal.TO_NEAREST 1.2;
计算结果为
1

几乎没有理由在日常编程中使用
Real.toInt
。相反,只需使用
round、floor、ceil、trunc中的一个函数,分别对应于
to\u negainf、to\u POSINF、to\u ZERO
的四种舍入模式。换句话说,与其使用
Real.toInt IEEEReal.TO_最接近1.2
,不如使用
round 1.2
。在这四个函数中,
trunc
对应于
int()
在Python(和其他语言)中的工作方式,因此可能是最熟悉的一个

使用
Real.toInt
我能看到的唯一一次是,如果您想试验不同的舍入模式如何影响计算。除非为舍入模式使用一个变量,该变量在不同的调用中具有不同的值,否则使用四个具有硬连线舍入模式的转换函数之一更具可读性