Приведите float к int в OCaml - PullRequest
       1

Приведите float к int в OCaml

16 голосов
/ 23 октября 2011

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

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

Ответы [ 2 ]

25 голосов
/ 23 октября 2011
# int_of_float ;;
- : float -> int = <fun>

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

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

9 голосов
/ 23 октября 2011

Вы можете просто 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, если вы действительно хотите округлить его до ближайшего целого числа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...