Преобразование float в int в OCaml

#ocaml

#ocaml

Вопрос:

Как я должен преобразовать float в целое число в OCaml?

Я знаю, как получить float из int, но, похоже, нет простого способа получить int из float .

Ответ №1:

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

Я предполагаю, что вы хотите рядом int (это округляется до нуля, так же, как и C).

Если вам нужно представление IEEE, см. Int64.bits_of_float .

Ответ №2:

вы можете просто truncate это сделать, если целочисленная часть float — это то, что вы хотите:

 printf "numbertinttfloortceiln";
List.iter 
  (fun x -> printf "%.1ft%dt%.1ft%.1fn" 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 , если вы действительно хотите округлить его до ближайшего целого числа