如何在不使用Int64
的情况下将F {中的Int32
转换为Microsoft.FSharp.Compatibility.Int32.of_int64
类型?
我这样做是因为当我尝试时,互动似乎不起作用:
open Microsoft.FSharp.Compatibility
添加FSharp.PowerPack
作为参考,它说:
错误FS0039:未定义命名空间“兼容性”。
修改:有人对这个问题有答案吗?关于int类型的建议是有用的和信息性的,但我在F#interactive中打开powerpack命名空间时遇到同样的问题。
答案 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