代码之家  ›  专栏  ›  技术社区  ›  Peter Booster

f中的biginteger中是否有pow的替代品?

  •  6
  • Peter Booster  · 技术社区  · 15 年前

    我在使用f中biginteger类的pow函数时,编译器告诉我:

    此构造已弃用。已删除此成员以确保 类型与.NET 4.0类型System.Numerics.BigInteger二进制兼容

    我想很公平,但我没有马上找到替代品。

    有吗?我们应该只使用我们自己的POW函数吗?如何在Net4.0中替换它?

    2 回复  |  直到 11 年前
        1
  •  13
  •   cfern    15 年前

    您可以使用pown函数

    let result = pown 42I 42

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

        2
  •  2
  •   Community skywinder    7 年前

    如果从基于OCAML的角度来看f,那么 OCaml Num module 具有幂num。由于ocaml type num是任意精度的有理数,因此它们可以处理任何大小的数字,例如,它们不受CPU寄存器的限制,因为它们可以进行符号化的数学运算。也因为num定义为

    类型num=
    |利息的利息
    |大整数大整数
    |比率比率

    他们可以处理非常小的数字,但由于比率类型的原因,精度会降低。

    因为f没有num类型, Jack 创造了 FSharp.Compatibility.OCaml 模块 num.fs 通过Nuget提供。

    所以你可以用这个得到你想要的精度,num函数可以处理负指数。