2013-08-19 12 views
17

Lernen F #, die Syntax ist mir noch ziemlich fremd. Wie kann ich diese Ganzzahl in Float umwandeln?Cast int zum Floaten in F #

let add x y = 
    x + y 

let j = 2 
add 1.1 j 

In C# Float + int = Float

float j = 1.1f + 5; 
+2

In C# gibt ein 'float' zu einem' double' einen 'double' zurück. Dein Code fügt ein 'float' und ein' int' hinzu. – Lee

+0

Während es offensichtlich ist, automatische, stille Werte in einer Sprache zu haben, bevorzuge ich die F # -Methode. Vermeidet Fehler durch automatisches Gießen von Typen. –

+0

@lee - Das ist lustig. Ich wollte nicht gleich doppelt schreiben. : S hat den Q repariert. – NitroxDM

Antwort

22

EDIT: misread Frage ...

Ich bin mir ziemlich sicher, dass die die float() Funktion die Arbeit machen würde:

add 1.1 (float 2) 
1

Hier sind einige Beispiele, die die Syntax zum Gießen zeigt:

let x: int = 5 (CAST x eine ganze Zahl zu sein)

let b: Byte = Byte x

Schauen Sie sich diesen Link (cast b ein Byte zu sein):

http://msdn.microsoft.com/en-us/library/dd233220.aspx

+0

Ich bin mir ziemlich sicher, dass es eine Möglichkeit gibt, einen Inline-Cast durchzuführen ... – feralin

+2

Das erste Beispiel ist nicht wirklich ein Cast. Es wäre sowieso ein int. –

4

Sie können mit einem Schwimmer konvertieren die Verwendung von float Funktion:

let add x y = x + (float y) 
8

Zuerst die Funktionen auf Sie angegebene hat Typ int->int->int was bedeutet, dass es dauert 2 int s und gibt eine int zurück. Wenn Sie es float s verwenden möchten, müssen Sie die Art eines der Argumente spezifizieren:

let add (x : float) y = x + y 
//add : float->float->float 

Wie andere erwähnt haben, können Sie auf einen float werfen mit der float() Funktion:

float 2 //2 : float 

Wenn Sie numerische Literale wie in Ihrem Beispiel verwenden, können Sie einfach 2.0 anstelle von 2 verwenden, das den Typ float hat.

add 1.1 2.0 
+0

Passing es zwei schwimmt funktioniert gut. Add 1.1 2.0 funktioniert ohne Problem. – NitroxDM

1

Da float eine Funktion ist, gibt es eine gewisse Eleganz

add 1.1 (j |> float) 

Auf dem Gesicht von ihm, das ist nicht viel besser als add 1.1 (float 2), aber wenn Sie das Ergebnis eines langen konvertieren Berechnung zu einem Schwimmer, kann das Vorwärtsrohr sehr nützlich sein.