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