Domanda

Stavo usando la funzione Pow della classe BigInteger in F #, quando il mio compilatore mi ha detto:

  

Questo costrutto è deprecato. Questo utente è stato rimosso per assicurare che questo      tipo è compatibile a livello binario con il tipo di .NET 4.0 System.Numerics.BigInteger

Fiera abbastanza immagino, ma non ho trovato subito una sostituzione.

C'è uno? Dovremmo utilizzare solo le nostre funzioni Pow? E (come) sarà sostituito in NET4.0?

È stato utile?

Soluzione

È possibile utilizzare la funzione pown

let result = pown 42I 42

pown funziona su qualsiasi tipo che 'capisce' moltiplicazione e 'uno'.

Altri suggerimenti

Se si guarda a F # dal punto di vista di essere basato su OCaml, allora la modulo di OCaml Num ha power_num. Poiché OCaml tipo num sono precisione arbitraria numeri razionali che possono gestire un numero qualsiasi dimensione, ad esempio essi non sono limitati dal registro delle CPU, perché possono fare la matematica simbolicamente. Anche perché num è definito come

Tipo num =
| Int di int
| Big_int di Big_int.big_int
| Rapporto tra Ratio.ratio

in grado di gestire un numero molto esiguo, con la perdita di precisione a causa del tipo di rapporto.

Dato che F # non ha il tipo num, Jack creato il modulo FSharp.Compatibility.OCaml che ha num.fs ed è disponibile tramite NuGet.

Così si può ottenere tutta la precisione che si desidera utilizzare questo, e le funzioni di num in grado di gestire esponenti negativi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top