2009-12-02 8 views
6

Ich war mit der Pow Funktion der BigInteger Klasse in F #, wenn mein Compiler mir gesagt:Gibt es einen Pow-Ersatz in BigInteger in F #?

veraltet Dieses Konstrukt wird. Das Mitglied wurde, um sicherzustellen, dass diese entfernt Typ kompatibel mit dem .NET 4.0 Typ System.Numerics.BigInteger

Fair enough binär ist denke ich, aber ich habe nicht unverzüglich Ersatz gefunden.

Gibt es eins? Sollten wir nur unsere eigenen Pow-Funktionen verwenden? Und (wie) wird es in NET4.0 ersetzt werden?

Antwort

13

können Sie die pown Funktion

let result = pown 42I 42

pown auf jede Art funktioniert verwenden, dass 'versteht' Multiplikation und 'Eins'.

+0

Es funktioniert immer noch nicht in pow (bigint, bigint) Situationen oder in pow (irgendwas, bigint) im Allgemeinen sehe ich, aber angesichts der Auswirkungen der Macht, die kein großes Problem wäre denke ich, – Peter

+4

+1 für total pwning diese Zahlen;) – RCIX

2

Wenn Sie sich F # aus der Perspektive betrachten, auf OCaml zu basieren, dann hat die OCaml Num module power_num. Da der OCaml-Typ num rationale Zahlen mit beliebiger Genauigkeit sind, können sie mit jeder beliebigen Größennummer umgehen, z. Sie sind nicht durch das CPU-Register begrenzt, da sie die Mathematik symbolisch ausführen können. Auch wenn num als

definiert ist, geben Sie num =
| Int von
| Big_int von Big_int.big_int
| Verhältnis von Ratio.Ratio

sie können sehr kleine Zahlen mit Verlust der Genauigkeit wegen des Verhältnis-Typs handhaben.

Da F # nicht den Num-Typ hat, Jack erstellt das -Modul, das num.fs hat und über NuGet verfügbar ist.

So können Sie alle die Präzision erhalten, die Sie wollen, und die Num-Funktionen können negative Exponenten behandeln.

Verwandte Themen