Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 4.0 为什么系统找不到BigInteger.ToDouble方法?_.net 4.0_F#_Type Conversion_Bignum - Fatal编程技术网

.net 4.0 为什么系统找不到BigInteger.ToDouble方法?

.net 4.0 为什么系统找不到BigInteger.ToDouble方法?,.net-4.0,f#,type-conversion,bignum,.net 4.0,F#,Type Conversion,Bignum,我使用的是F#Interactive,我添加了FSharp.PowerPack.dll的引用 当我尝试将BigNum转换为double时,如下代码所示 let n = 2N let d = double n 错误就出来了 System.MissingMethodException:未找到方法:“Double System.Numerics.BigInteger.ToDouble(System.Numerics.BigInteger)”。位于Microsoft.FSharp.Math.BigNu

我使用的是F#Interactive,我添加了FSharp.PowerPack.dll的引用

当我尝试将BigNum转换为double时,如下代码所示

let n = 2N
let d = double n
错误就出来了

System.MissingMethodException:未找到方法:“Double System.Numerics.BigInteger.ToDouble(System.Numerics.BigInteger)”。位于Microsoft.FSharp.Math.BigNum.ToDouble(BigNum n)


如果我想进行像“BigNum到int”和“BigNum到double”这样的转换,我该怎么办?非常感谢。

您所写的内容将在F#独立CTP中使用

此错误发生在VS2010中,因为BigInteger类型已从F#库移动到.Net4.0核心库。我不确定这个问题是否与F#CTP和VS2010测试版的安装有关

在出现更好的解决方案之前,您可以像这样进行自己的转换:

让numToDouble(n:bignum)=双n.分子/双n.分母

要将bignum转换为整数,您可以考虑以下内容:

让numpoint(n:bignum)=int n.分子/int n.分母

但这相当危险:它很容易溢出。更好的NumPoint版本是先转换为双精度,然后再转换为int:


让numpoint=int感谢您的解决方案。我想用它直到更好的。
> numToDouble (pown 11N 300 / pown 13N 280);;
val it : float = nan