Las variables son double precision por defecto en MATLAB, por lo que la variable e
que se crea se limita a la precisión de un doble, que está a unos 16 dígitos. Aunque haya ingresado más dígitos, un doble no tiene la precisión para representar con precisión todos esos dígitos adicionales y lo redondea al número más cercano que pueda representar.
EDIT: Como se explica con más detalle por Andrew Janke en su respuesta a this follow-up question he publicado, el número que ha elegido para e
sólo pasa a ser una expansión decimal exacto del valor binario. En otras palabras, es el valor exactamente representable al que se redondearía un número cercano de coma flotante. Sin embargo, en este caso, nada más de aproximadamente 16 dígitos más allá del punto decimal no se considera significativo, ya que no se puede representar con precisión con un tipo de precisión doble. Por lo tanto, funciones como SPRINTF ignorarán automáticamente estos pequeños valores, imprimiendo ceros en su lugar.
Esto puede no tener nada que ver con su pregunta, pero si quiere los verdaderos dígitos de 'e' debe escribir en su lugar' vpa ('exp (1)', 53) ' – MarkV
@MarkV: Sí, pero me gusta eso. ¡Gracias! – Peterstone