Ocaml 浮点值为int的类型转换

Ocaml 浮点值为int的类型转换,ocaml,Ocaml,我从ocaml开始,并尝试: 浮点数8/2 我希望它返回4.0,因为8/2是4,但我得到一个错误,即: Error: This expression has type float but an expression was expected of type int 我在这里遗漏了什么?您的表达式解析如下: (float_of_int 8) / 2 因此,您要求使用适用于ints的/对浮点进行除法 函数应用程序(在OCaml中通过并排放置两个表达式表示)具有非常高的优先级,高于所有二进制中缀

我从ocaml开始,并尝试:

浮点数8/2

我希望它返回4.0,因为8/2是4,但我得到一个错误,即:

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

我在这里遗漏了什么?

您的表达式解析如下:

(float_of_int 8) / 2
因此,您要求使用适用于ints的
/
对浮点进行除法

函数应用程序(在OCaml中通过并排放置两个表达式表示)具有非常高的优先级,高于所有二进制中缀运算符。所以你需要用括号

如果你写下:

float_of_int (8/2)

在阅读了Jeffrey的回答后,我找到了另一种处理这个表达的方法,虽然只是一个较长的陈述:

float_of_int 8/. float_of_int 2;;
有关所有OCaml运算符的优先级和关联性的表,请参见。