【问题标题】:Is there a substitute for Pow in BigInteger in F#?F# 中 BigInteger 中的 Pow 有替代品吗?
【发布时间】:2023-03-15 14:40:02
【问题描述】:

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

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

我猜还不错,但我没有立即找到替代品。

有吗?我们应该只使用我们自己的 Pow 函数吗?以及(如何)在 NET4.0 中会被取代?

【问题讨论】:

    标签: f# biginteger pow


    【解决方案1】:

    可以使用pown函数

    let result = pown 42I 42

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

    【讨论】:

    • 它在 pow(bigint,bigint) 情况下或在 pow(sometype,bigint) 我看到的情况下仍然不起作用,但考虑到权力的影响,这不是一个大问题,我认为
    【解决方案2】:

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

    输入数字 =
    |整数的整数
    | Big_int 的 Big_int.big_int
    |比率的比率.ratio

    由于 Ratio 类型,它们可以处理非常小的数字而不会损失精度。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多