如何将Real转换为Int?

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

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

在 SML 文档中,我读到了一个函数 toInt, but there was no example so I probably use it in the wrong way.

我试过这个:

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分别对应于 4 种舍入模式的 -- 函数之一TO_NEAREST, TO_NEGINF, TO_POSINF, TO_ZERO。换句话说,不是使用Real.toInt IEEEReal.TO_NEAREST 1.2,而是使用round 1.2。在这四个函数中,trunc对应int()于 Python(和其他语言)的工作方式,因此可能是最熟悉的一个。

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


以上是如何将Real转换为Int?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>