Все числа в JS внутренне определены как float и, при необходимости, сбрасывают менее значимые цифры.
(10000000000000000000000000000 + 1) == 10000000000000000000000000000
// this will return true
И javascript хорошо известен тем, что он часто отбрасывает биты в числах. Так что обращайтесь с осторожностью