【问题标题】:How to convert Real to Int?如何将 Real 转换为 Int?
【发布时间】:2021-07-13 13:49:37
【问题描述】:

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

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

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

我试过了:

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

都错了……

【问题讨论】:

    标签: sml smlnj


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 2020-07-17
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多