Ocaml 浮点值为int的类型转换
我从ocaml开始,并尝试: 浮点数8/2 我希望它返回4.0,因为8/2是4,但我得到一个错误,即: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中通过并排放置两个表达式表示)具有非常高的优先级,高于所有二进制中缀
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运算符的优先级和关联性的表,请参见。