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

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

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

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

有帮助吗?

解决方案

可以使用POWN功能

let result = pown 42I 42

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

其他提示

如果你从基于 OCaml 的角度来看待 F#,那么 OCaml 数字模块 有 power_num。由于 OCaml 类型 num 是任意精度的有理数,因此它们可以处理任何大小的数字,例如它们不受 CPU 寄存器的限制,因为它们可以符号地进行数学运算。另外,由于 num 定义为

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

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

由于 F# 没有 num 类型, 杰克 创造了 FSharp.兼容性.OCaml 模块有 编号 并可通过 NuGet 获取。

因此,您可以使用它获得所需的所有精度,并且 num 函数可以处理负指数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top