2016-07-29 12 views
2

私はocamlで始まり​​、試してみました:float_of_intでの型変換

float_of_int 8/2 ;;

私は8/2が4であるが、私はそれを言ってエラーが出るので、それが4.0を返すことを期待していた:

Error: This expression has type float but an expression was expected of type 
int 

私はここで何をしないのですか?

答えて

4

あなたの表現は、このように解析されます。

(float_of_int 8)/2 

だからあなたはint型に適用される/を使用してfloatを、分割して求めています。

関数アプリケーション(2つの式を並べることでOCamlに表示されます)は、すべてのバイナリインフィックス演算子よりも高い優先順位を持ちます。したがって、かっこを使用する必要があります。あなたが書く場合、それは動作します

float_of_int (8/2) 
+1

のhttpを参照してください:// CAMLを.inria.fr/pub/docs/manual-ocaml/expr.htmlは、すべてのOCaml演算子の優先順位と結合性を持つテーブルです。 – ChriS

0

ジェフリーの答えを読んだ後、私は少し長く声明かかわら表現で動作する別の方法を見つけました:

float_of_int 8/. float_of_int 2;;