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.
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.
# 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
.
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ı