F#int64到int

时间:2008-10-25 04:02:17

标签: f# type-conversion

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

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

open Microsoft.FSharp.Compatibility

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

  

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

修改:有人对这个问题有答案吗?关于int类型的建议是有用的和信息性的,但我在F#interactive中打开powerpack命名空间时遇到同样的问题。

3 个答案:

答案 0 :(得分:19)

F#1.9.6有一个类型转换功能,所以你可以这样做:

let num = 1000
let num64 = int64(num)

答案 1 :(得分:10)

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

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

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

> myint;;
val it : int32 = 1

答案 2 :(得分:1)

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

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