13

如何在不使用 的情况下将 an 转换为 F#Int64中的类型?Int32Microsoft.FSharp.Compatibility.Int32.of_int64

我这样做是因为当我尝试时交互式似乎不起作用:

open Microsoft.FSharp.Compatibility

作为FSharp.PowerPack参考添加它说:

错误 FS0039:未定义命名空间“兼容性”。

编辑:有人对这个问题有答案吗?关于 int 类型的建议很有用且内容丰富,但我在 F# 交互式中打开 powerpack 命名空间时遇到了同样的问题。

4

3 回答 3

22

F# 1.9.6 具有类型转换功能,因此您可以这样做:

let num = 1000
let num64 = int64(num)
于 2008-10-25T04:11:49.530 回答
11

请注意,在这种类型的转换中,当您减小值的大小时,最重要的字节会被丢弃,因此您的数据可能会被截断:

> let bignum =  4294967297L;;
val bignum : int64

> let myint = int32(bignum);;
val myint : int32

> myint;;
val it : int32 = 1
于 2008-10-25T04:40:17.603 回答
1

请注意,用于转换为每个整数类型的函数与类型本身具有相同的名称,并且在库规范中定义(见下文)。(随着 CTP (1.9.6.2) 的发布,与之前的版本相比,很多库和命名空间发生了一些变化,但它可能会更加“稳定”。)

http://research.microsoft.com/fsharp/manual/FSharp.Core/Microsoft.FSharp.Core.Operators.html

于 2008-10-25T07:00:42.887 回答