javascript - Why doesn't the "|" operator work for large values? -
i looking @ this question how efficiently check if value integer. 1 answer recommended using n === (n|0) quick rounding via | operator. on whim, decided test number.max_value. despite fact should integer (i think?), test came false.
it came false number.max_safe_integer, decided test other large numbers , found following:
number.max_value | 0 --> 0 number.max_safe_integer | 0 --> -1 number.max_safe_integer/2 | 0 --> -1 number.max_safe_integer/8 | 0 --> -1 1234567890 | 0 --> 1234567890 i'm not sure | operator doing internally, doesn't seem safe on max_safe_integer. why case?
while true max_safe_integer integer... it's integer in double-precision float format, ie. 53 bits long.
meanwhile, bitwise operators work on 32-bit integers.
i think can see going ;)
Comments
Post a Comment