OCaml 中的 C99 风格的十六进制浮点常量
C99-style hexadecimal floating-point constants in OCaml
在 OCaml 中,如何以十六进制解析 C99 风格的浮点常量(作为文字或内部字符串),例如 0x1.b000000000000p4
?
它们似乎不是有效的文字:
# let c = 0x1.b000000000000p4;;
Characters 12-27:
let c = 0x1.b000000000000p4;;
^^^^^^^^^^^^^^^
Error: Unbound record field b000000000000p4
而且似乎没有 Scanf
转换器来解析它们(例如,C99 的 %a
转换器对应 printf
)。
float_of_string
应该能够解析它们:
# float_of_string "0x1.199999999999Ap1";;
- : float = 2.2
然而,正如 Alain Frisch noted 在 OCaml 的错误跟踪器上所说,支持实际上取决于底层 libc,目前无法在 MSVC 端口上运行。
在 OCaml 中,如何以十六进制解析 C99 风格的浮点常量(作为文字或内部字符串),例如 0x1.b000000000000p4
?
它们似乎不是有效的文字:
# let c = 0x1.b000000000000p4;;
Characters 12-27:
let c = 0x1.b000000000000p4;;
^^^^^^^^^^^^^^^
Error: Unbound record field b000000000000p4
而且似乎没有 Scanf
转换器来解析它们(例如,C99 的 %a
转换器对应 printf
)。
float_of_string
应该能够解析它们:
# float_of_string "0x1.199999999999Ap1";;
- : float = 2.2
然而,正如 Alain Frisch noted 在 OCaml 的错误跟踪器上所说,支持实际上取决于底层 libc,目前无法在 MSVC 端口上运行。