According to my understanding, Int64.float_of_bits
should give a valid representation for negative integers. However it gives NaN.
Rescript version: 10.1.4, currently trying on an M2 processor.
Js.log("-2"->Int64.of_string->Int64.float_of_bits)
Is this a bug in Caml_int64.float_of_bits
or in Rescript? Or am I misunderstanding how float_of_bits
works?
2 Likes
Ryan
2
Here is my guess: In OCaml the integers use two’s complement representation, so I’m assuming that Caml_int64.float_of_bits
will be as well.
So 2
is
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0010
and -2 in the two’s complement is
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1110
And that interpreted as bits in IEEE 754
1 11111111111 1111111111111111111111111111111111111111111111111110
^ sign
^^exponent^
^^fraction^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
would be a representation of nan.
I would probably use BigInt instead of Int64 that has no support in JS.