This is what ghci (Haskell) says:
Prelude> 9223372036844775807 == 9223372036844775808
False
Prelude> 9223372036844775807.0 == 9223372036844775808.0
True
This is what Python says: >>> 9223372036844775807 == 9223372036844775808
False
>>> 9223372036844775807.0 == 9223372036844775808.0
True
Here is what SBCL (Common Lisp) says: * (= 9223372036844775807 9223372036844775808)
NIL
* (= 9223372036844775807.0 9223372036844775808.0)
T
Lua: > print(9223372036844775807 == 9223372036844775808)
true (!!!!!)
> print(9223372036844775807.0 == 9223372036844775808.0)
true
Javascript: alert(9223372036844775807 == 9223372036844775808)
true (!!!!!)
alert(9223372036844775807.0 == 9223372036844775808.0)
true
Other languages that will also do this[1]: Javascript, Lua. Languages that won't: anything with actual, honest-to-god integers, and not floats or doubles masquerading as them.[2] Languages that actually handle numbers sensibly: Lisp.[3] I'm not familiar with any others that actually treat rational numbers like rational numbers, but I expect there are some. (It's still, of course, impossible to treat real numbers like real numbers, meaning that this sort of thing will also happen there.)[1] Well, not the string-to-number bit, but whatever.
[2] Except for the niggle that they'll still do this when you're using floating point numbers, because this is what floating point numbers do.