Есть ли замена Pow в BigInteger в F#?
-
11-09-2019 - |
Вопрос
Я использовал функцию Pow класса BigInteger в F#, когда мой компилятор сказал мне:
Эта конструкция устарела.Этот элемент был удален, чтобы убедиться, что этот тип совместим с системой .net 4.0 Type.numerics.biginteger
Думаю, это справедливо, но замену я нашел не сразу.
Есть ли такой?Должны ли мы использовать только наши собственные функции Pow?И (как) оно будет заменено в NET4.0?
Решение
Вы можете использовать функцию pown
let result = pown 42I 42
pown работает с любым типом, который «понимает» умножение и «единицу».
Другие советы
Если вы посмотрите на F# с точки зрения того, что он основан на OCaml, то Модуль OCaml Num имеет power_num.Поскольку num типа OCaml являются рациональными числами произвольной точности, они могут обрабатывать числа любого размера, например.они не ограничены регистром ЦП, поскольку могут выполнять математические операции символьно.Кроме того, поскольку num определяется как
тип номер =
| Int int
| Big_int of big_int.big_int
| Соотношение соотношения.ratio
они могут обрабатывать очень маленькие числа без потери точности из-за типа Ratio.
Поскольку F# не имеет типа num, Джек создал FSharp.Compatibility.OCaml модуль, который имеет число.fs и доступен через NuGet.
Таким образом, вы можете получить всю необходимую точность, используя это, а функции num могут обрабатывать отрицательные показатели.