Ответ 1
# int_of_float ;;
- : float -> int = <fun>
Я предполагаю, что вы хотите близкий int
(этот раунд к нулю, такой же, как C).
Если вы хотите представление IEEE, см. Int64.bits_of_float
.
Как я должен использовать float для целого числа в OCaml?
Я знаю, как получить float из int, но, похоже, нет простого способа получить int из float.
# int_of_float ;;
- : float -> int = <fun>
Я предполагаю, что вы хотите близкий int
(этот раунд к нулю, такой же, как C).
Если вы хотите представление IEEE, см. Int64.bits_of_float
.
вы можете просто 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
, если вы действительно хотите округлить его до ближайшего целого числа