初始化int64变量

art*_*lla 2 ocaml

我尝试以下列方式初始化int64变量:

let k:int64 = 4000000000;;
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误消息:

Error: Integer literal exceeds the range of representable integers of type int
Run Code Online (Sandbox Code Playgroud)

如何将k初始化为40亿?谢谢.

pad*_*pad 6

您应该使用L说明符来表示int64文字:

let k = 4000000000L;;

或者,由于数字超出了int32的范围,您可以从float以下位置进行转换:

let k = Int64.of_float 4000000000.;;

  • 应该注意的是,"替代"提议对于大于2 ^ 53左右的整数存在问题. (3认同)