Как было предложено в предыдущих ответах, вы можете использовать десятичные числа через модуль decimal или поочередно указывать 15 десятичных знаков при печати значений с плавающей запятой, чтобы переопределить значение по умолчанию 12 мест.
Во многих реализациях Python обычные числа с плавающей запятой являются совместимыми с IEEE 754 ( 1 , 2 ) «двоичными64» значениями двойной точности, поэтому эффективно 53 бит в их мантиссах. Поскольку 53*math.log(2)/math.log(10)
составляет около 15,95, бинарные 64 номера поддерживают более 15 десятичных цифр точности, но не совсем 16.
Вот пример, который вы можете попробовать, показанный с его выходом:
u=1e-15
v=0.123456789101997
for k in range(13):print '{:20.15f}'.format(v+k*u)
0.123456789101997
0.123456789101998
0.123456789101999
0.123456789102000
0.123456789102001
0.123456789102002
0.123456789102003
0.123456789102004
0.123456789102005
0.123456789102006
0.123456789102007
0.123456789102008
0.123456789102009