微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 Real 转换为 Int?

如何解决如何将 Real 转换为 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 的唯一时间是如果您想试验不同的舍入模式如何影响计算。除非您为舍入模式使用一个变量,该变量在不同的调用中采用不同的值,否则使用具有硬连线舍入模式的四个转换函数之一更具可读性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。