在F#中BigInteger中是否有Pow的替代品?

时间:2009-12-02 14:15:58

标签: f# biginteger pow

当我的编译器告诉我时,我在F#中使用了BigInteger类的Pow函数:

  

不推荐使用此构造。此成员已被删除以确保这一点      type是与.NET 4.0类型System.Numerics.BigInteger

二进制兼容的

我觉得很公平,但我没有立即找到替代品。

有吗?我们应该只使用自己的Pow功能吗?它将如何在NET4.0中被替换?

2 个答案:

答案 0 :(得分:13)

您可以使用pown功能

let result = pown 42I 42

pown适用于任何“理解”乘法和“一”的类型。

答案 1 :(得分:2)

如果从基于OCaml的角度来看F#,那么OCaml Num module就有了power_num。由于OCaml类型num是任意精度的有理数,它们可以处理任何大小的数字,例如,它们不受CPU寄存器的限制,因为它们可以象征性地进行数学运算。此外,因为num被定义为

输入num =
| Int int | Big_int.big_int的Big_int |比率比率

由于比率类型的原因,它们可以处理非常小的数字而不会导致精度损失。

由于F#没有num类型,Jack创建了FSharp.Compatibility.OCaml模块,该模块具有num.fs并可通过NuGet获取。

所以你可以使用它获得你想要的所有精度,而num函数可以处理负指数。