2013-08-19 14 views
17

Apprendimento F #, la sintassi è ancora abbastanza strana per me. Come faccio a convertire questo intero in virgola mobile?Cast int per fluttuare 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#, l'aggiunta di un 'float' a un' double' restituisce un 'double'. Il tuo codice sta aggiungendo un 'float' e un' int'. – Lee

+0

Mentre sembra ovvio avere un cast automatico e silenzioso dei valori in una lingua, preferisco il modo F # di fare le cose. Evita gli errori derivanti dalla trasmissione automatica dei tipi. –

+0

@lee - È divertente. Intendevo non mettere il doppio. : S riparato il Q – NitroxDM

risposta

22

EDIT: domanda misread ...

Sono abbastanza sicuro che la funzione float() farebbe il lavoro:

add 1.1 (float 2) 
1

Ecco alcuni esempi che mostrano la sintassi per la colata:

let x: int = 5 (Cast x essere un numero intero)

let b: byte = byte x (Cast b per essere un byte)

controlla questo link:

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

+0

Sono abbastanza sicuro che c'è un modo per eseguire un cast in linea ... – feralin

+2

Il primo esempio non è proprio un cast. In ogni caso, si supponeva che fosse un int. –

4

È possibile convertire ad un galleggiante con il Funzione float:

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

In primo luogo, le funzioni su di te specificato ha tipo int->int->int che significa che prende 2 int s e restituisce un int. Se si desidera utilizzare float s è necessario specificare il tipo di uno degli argomenti:

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

Come altri hanno detto, si può lanciare ad un float utilizzando la funzione float():

float 2 //2 : float 

Se utilizzi valori letterali numerici come nell'esempio, puoi semplicemente utilizzare 2.0 anziché 2 con il tipo float.

add 1.1 2.0 
+0

Il passaggio di due galleggianti funziona bene. aggiungi 1.1 2.0 funziona senza problemi. – NitroxDM

1

Perché float è una funzione, v'è una certa eleganza al

add 1.1 (j |> float) 

Sulla faccia di esso, che non è molto meglio di add 1.1 (float 2), ma se si desidera convertire il risultato di un lungo calcolo su un float, la pipe forward può essere molto utile.

Problemi correlati