【发布时间】:2023-03-15 14:40:02
【问题描述】:
当我的编译器告诉我时,我正在使用 F# 中 BigInteger 类的 Pow 函数:
此构造已弃用。此成员已被删除,以确保此 type 与 .NET 4.0 类型 System.Numerics.BigInteger 二进制兼容
我猜还不错,但我没有立即找到替代品。
有吗?我们应该只使用我们自己的 Pow 函数吗?以及(如何)在 NET4.0 中会被取代?
【问题讨论】:
标签: f# biginteger pow
当我的编译器告诉我时,我正在使用 F# 中 BigInteger 类的 Pow 函数:
此构造已弃用。此成员已被删除,以确保此 type 与 .NET 4.0 类型 System.Numerics.BigInteger 二进制兼容
我猜还不错,但我没有立即找到替代品。
有吗?我们应该只使用我们自己的 Pow 函数吗?以及(如何)在 NET4.0 中会被取代?
【问题讨论】:
标签: f# biginteger pow
可以使用pown函数
let result = pown 42I 42
pown 适用于任何“理解”乘法和“一”的类型。
【讨论】:
如果从基于 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 函数可以处理负指数。
【讨论】: