15 Stimmen

F# int64 zu int

Wie kann ich eine Int64 zu einer Int32 Typ in F# ohne die Verwendung der Microsoft.FSharp.Compatibility.Int32.of_int64 ?

Ich tue dies, weil interaktiv nicht zu funktionieren scheint, wenn ich es versuche:

open Microsoft.FSharp.Compatibility

Avec FSharp.PowerPack als Referenz hinzugefügt, heißt es:

Fehler FS0039: Der Namespace 'Compatibility' ist nicht definiert.

Bearbeiten: Hat jemand eine Antwort auf diese Frage? Die Vorschläge zu den int-Typen sind nützlich und informativ, aber ich habe das gleiche Problem beim Öffnen des Powerpack-Namensraums in F# interactive.

23voto

Thedric Walker Punkte 1797

F# 1.9.6 hat eine Typkonvertierungsfunktion, mit der Sie dies tun können:

let num = 1000
let num64 = int64(num)

11voto

Christian C. Salvadó Punkte 763569

Beachten Sie, dass bei dieser Art der Konvertierung, wenn Sie die Größe eines Wertes reduzieren, die höchstwertigen Bytes weggeworfen werden, so dass Ihre Daten möglicherweise abgeschnitten werden:

> let bignum =  4294967297L;;
val bignum : int64

> let myint = int32(bignum);;
val myint : int32

> myint;;
val it : int32 = 1

1voto

Brian Punkte 115257

Beachten Sie, dass die Funktionen für die Konvertierung in jeden Integer-Typ die gleichen Namen haben wie die Typen selbst und in der Bibliotheksspezifikation (siehe unten) definiert sind. (Mit der Veröffentlichung der CTP (1.9.6.2) hat sich ein großer Teil der Bibliothek und der Namensräume im Vergleich zu früheren Versionen etwas geändert, aber es wird wahrscheinlich in Zukunft "stabiler" sein).

http://research.microsoft.com/fsharp/manual/FSharp.Core/Microsoft.FSharp.Core.Operators.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X