2011-10-23 41 views
12

我該如何在OCaml中將浮點數轉換爲整數?Cast在OCaml中漂浮到int

我知道如何從一個int獲得一個浮點數,但似乎並沒有從浮點數獲得一個int的簡單方法。

回答

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

我假設你想在附近int(這輪趨向於零,同C一樣)。

如果需要IEEE表示法,請參見Int64.bits_of_float

8

你可以簡單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,如果你真的想圓起來的最接近的整數