Nauka F #, składnia jest nadal całkiem obca dla mnie. Jak obsłużyć tę liczbę całkowitą do unoszenia się?Rzucanie int do float w F #
let add x y =
x + y
let j = 2
add 1.1 j
C# Pływak + int = pływakowy
float j = 1.1f + 5;
Nauka F #, składnia jest nadal całkiem obca dla mnie. Jak obsłużyć tę liczbę całkowitą do unoszenia się?Rzucanie int do float w F #
let add x y =
x + y
let j = 2
add 1.1 j
C# Pływak + int = pływakowy
float j = 1.1f + 5;
EDIT: błędnie odczytany pytanie ...
jestem całkiem pewny, że funkcja float()
by wykonać zadanie:
add 1.1 (float 2)
Oto przykłady pokazujące składni odlewania:
Niech x int = 5 (odlewu X jest liczbą całkowitą)
let b: bajtów = bajt x (oddanych b być bajt)
Sprawdź ten link:
Jestem prawie pewny, że istnieje sposób na obsadzenie linii ... – feralin
Pierwszy przykład nie jest tak naprawdę obsadą. Można by sądzić, że i tak jest int. –
można konwertować do pacy przy użyciu Funkcja float
:
let add x y = x + (float y)
Po pierwsze, funkcja podany użytkownik ma typ int->int->int
, co oznacza, że zajmuje on 2 int
s i zwraca wartość int
. Jeśli chcesz go używać float
s trzeba określić typ jednego z argumentów:
let add (x : float) y = x + y
//add : float->float->float
Jak wspominają inni, można oddać do float
pomocą float()
funkcję:
float 2 //2 : float
Jeśli używasz literałów numerycznych, jak w twoim przykładzie, możesz po prostu użyć 2.0
zamiast 2
, który ma typ float
.
add 1.1 2.0
Przekazywanie dwóch pływaczy działa dobrze. dodaj 1.1 2.0 działa bez problemu. – NitroxDM
Ponieważ float
jest funkcją, jest pewna elegancja
add 1.1 (j |> float)
Na pierwszy rzut oka, to nie jest dużo lepiej niż add 1.1 (float 2)
, ale jeśli chcesz przekonwertować wynik długa obliczenia do float, rura do przodu może być bardzo przydatna.
W języku C# dodanie 'float' do' double' zwraca 'double'. Twój kod dodaje 'float' i' int'. – Lee
Podczas gdy wydaje się oczywiste, że masz automatyczne, ciche rzucanie wartości w języku, wolę sposób F # robienia rzeczy. Unika błędów wynikających z automatycznego rzucania typów. –
@lee - To zabawne. Zamierzałem umieścić int nie podwójny. : S naprawiono Q. – NitroxDM