2011-10-23 16 views
12

OCaml'de bir tamsayıya nasıl bir değer atmalıyım?Döküm şamandıraı OCaml'e göre

Bir int'den bir float nasıl elde edeceğini biliyorum, ancak bir floattan int almak için kolay bir yol yok gibi görünüyor.

cevap

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

İstediğin varsayalım yakındaki bir int (bu C yapsa aynı şekilde, sıfıra doğru yuvarlar).

IEEE temsilini istiyorsanız, bkz. Int64.bits_of_float.

8

yapabilirsiniz basitçe truncate o şamandıranın tamsayı kısmı istediğini ise:

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

veya floor/ceil ve sonra truncate, gerçekten kadar yuvarlak istiyorum en yakın tamsayı