2011-10-23 10 views
12

OCamlで浮動小数点型を整数にキャストする方法を教えてください。OCamlでfloatをintにキャストする

私はintからfloatを取得する方法を知っていますが、浮動小数点から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、あなたが本当にそれを切り上げしたい場合最も近い整数

関連する問題