我应该如何将浮点数转换为OCaml中的整数?
我知道如何从int获取一个浮点数,但似乎没有一种简单的方法可以从浮点数中获取一个int。
答案 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
,如果你真的想把它四舍五入到最接近的整数