Может кто-нибудь помочь мне распаковать то, что именно происходит под капотом здесь?
>>> 1e16 + 1.
1e+16
>>> 1e16 + 1.1
1.0000000000000002e+16
Я на 64-битном Python 2.7. Во-первых, я бы предположил, что, поскольку для float существует только точность 15, это просто ошибка округления. Истинным ответом с плавающей запятой может быть что-то вроде
10000000000000000.999999....
И десятичное число просто прерывается. Но второй результат заставляет меня сомневаться в этом понимании и не может быть точно представлен? Любые мысли?
[ Изменить: просто для уточнения. Я никоим образом не предлагаю, чтобы ответы были "неправильными". Ясно, что они правы, потому что, ну, они есть. Я просто пытаюсь понять, почему.]