如何解决如何将 Real 转换为 Int?
假设我有 0.0,如何将其转换为 0?
我知道我可以使用 Real.fromInt(0)
来做相反的事情 (0 -> 0.0) 但是 Real
到 Int
怎么样?
在 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 举报,一经查实,本站将立刻删除。