【发布时间】:2012-01-01 19:30:45
【问题描述】:
标准 SML 库函数 Int.toString 以 ~ 而不是 - 作为负数前缀。有没有库函数可以改用-,没写完
fun i2s i =
if i < 0 then "-" ^ Int.toString (~i) else Int.toString i
【问题讨论】:
-
请注意,您的函数在某些情况下会导致 OverflowError,因为在典型架构中,最小可表示整数的幅度大于最大可表示整数。 (例如,32 位二进制补码有符号整数的范围从 ~2147483648 到 2147483647。)您的用例可能会也可能不会接受。如果它不可以接受,那么另一种选择是
fun i2s i = String.map (fn #"~" => #"-" | c => c) (Int.toString i)。