2011-10-23 19 views
12

¿Cómo se supone que voy a lanzar un flotante a un entero en OCaml?Transmitir flotante a int en OCaml

Sé cómo obtener una flotación desde un int, pero no parece ser una manera fácil de obtener un int de un float.

Respuesta

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

Asumo desea una cercana int (esto redondea hacia cero, al igual que lo hace C).

Si desea la representación de IEEE, consulte Int64.bits_of_float.

8

puede simplemente truncate que, si la parte número entero del flotador es lo que quiere:

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 
*) 

o floor/ceil, y luego truncate, si realmente desea redondear hacia arriba a la entero más cercano