2011-10-23 14 views
12

Come faccio a trasmettere un float a un intero in OCaml?Cast float to int in OCaml

So come ottenere un float da un int, ma non sembra essere un modo semplice per ottenere un int da un float.

risposta

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

Presumo che si desidera una vicina int (questo arrotonda a zero, uguale a C fa).

Se si desidera la rappresentazione IEEE, vedere Int64.bits_of_float.

8

si può semplicemente truncate, se la parte intero del galleggiante è ciò che si vuole:

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, e poi truncate, se si vuole veramente per arrotondare fino al numero intero più vicino