OCaml - 此表达式的类型为 float,但表达式应为 int 类型

OCaml - This expression has type float but an expression was expected of type int

为什么我在使用 truncate 时会收到此错误,它应该将 float 转换为 int?它接受一个整数列表。

let find_closest bi =
    let bi_integer = (car bi) in 
    truncate (floor ((log bi_integer)/(log 2)))

使用 (float_of_int bi_integer) 而不是 bi_integer。同样使用 /. 代替 / 并使用 2.0 代替 2——OCaml 没有类型间的隐式转换。