如何为值分配大数?

Sco*_*rod 2 f#

我正在努力为一个值分配一个长数字.

let cardNumber = 1234567891234567
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

此数字超出了32位有符号的允许范围

然后我尝试了:

let cardNumber = (int64 1234567891234567)
Run Code Online (Sandbox Code Playgroud)

但是,我得到了同样的错误.

我正在引用以下文档.但是,我不知道我需要做些什么才能使编译器满意.

N_A*_*N_A 13

作为强类型语言,F#要求所有文字都具有显式类型.没有小数点但没有后缀的数字被认为是32位整数文字.

在您的情况下,这意味着1234567891234567是一个32位整数字面值,正如您所指出的,32位整数不能那么大.要告诉编译器你希望它是一个64位整数文字,你需要在它之后放一个'L',如下所示:

let cardNumber = 1234567891234567L
Run Code Online (Sandbox Code Playgroud)

有关如何声明不同类型的文字,请参阅https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/literals.