在OCaml中将float转换为int

时间:2011-10-23 19:02:51

标签: ocaml

我应该如何将浮点数转换为OCaml中的整数?

我知道如何从int获取一个浮点数,但似乎没有一种简单的方法可以从浮点数中获取一个int。

2 个答案:

答案 0 :(得分:24)

# int_of_float ;;
- : float -> int = <fun>

我假设你想要一个附近的int(这个回合朝向零,与C一样)。

如果您需要IEEE代表,请参阅Int64.bits_of_float

答案 1 :(得分:9)

如果浮点数的整数部分符合您的要求,您可以简单地truncate

printf "number\tint\tfloor\tceil\n";
List.iter 
  (fun x -> printf "%.1f\t%d\t%.1f\t%.1f\n" x (truncate x) (floor x) (ceil x)) 
  fs;;

(* 
 * number       int     floor   ceil
 *    3.3        3       3.0     4.0
 *    3.5        3       3.0     4.0
 *    3.7        3       3.0     4.0
 *   -3.3       -3      -4.0    -3.0
 *)

floor / ceil,然后是truncate,如果你真的想把它四舍五入到最接近的整数