如何将 Real 转换为 Int?

How to convert Real to Int?

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

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

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

我试过这个:

Real.toInt(a)
val a Real.toInt;

都错了...

Real.toInt 的类型为 IEEEReal.rounding_mode -> real -> int 因此它要求您指定舍入模式。例如:

Real.toInt IEEEReal.TO_NEAREST 1.2;

计算为 1

在日常编程中几乎没有理由使用Real.toInt。相反,只需使用 round, floor, ceil, trunc 之一——分别对应于 TO_NEAREST, TO_NEGINF, TO_POSINF, TO_ZERO 的 4 种舍入模式的函数。换句话说,不要使用 Real.toInt IEEEReal.TO_NEAREST 1.2,只需使用 round 1.2。在这四个函数中,trunc 对应于 int() 在 Python(和其他语言)中的工作方式,因此可能是最熟悉的一个。

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