¿Por qué str (float) devuelve más dígitos en Python 3 que Python 2?
En Python 2.7,repr
de unfloat
devuelve el número decimal más cercano de hasta 17 dígitos de largo; Esto es lo suficientemente preciso como para identificar de forma exclusiva cada valor de punto flotante IEEE posible.str
de unfloat
funcionó de manera similar, excepto que limitó el resultado a 12 dígitos; Para la mayoría de los propósitos, este es un resultado más razonable y lo aísla de las pequeñas diferencias entre la representación binaria y decimal.
Demo de Python 2:http://ideone.com/OKJtxv
print str(1.4*1.5)
2.1
print repr(1.4*1.5)
2.0999999999999996
En Python 3.2 aparecestr
yrepr
devolver lo mismo.
Demo de Python 3:http://ideone.com/oAKRsb
print(str(1.4*1.5))
2.0999999999999996
print(repr(1.4*1.5))
2.0999999999999996
¿Existe una PEP que describa el cambio o alguna otra declaración de alguien responsable?