Les variables sont double precisionpar défaut dans Matlab, de sorte que la e
variable que vous créez est limitée à la précision d'un double, qui est d'environ 16 chiffres. Même si vous avez entré plus de chiffres, un double n'a pas la précision de représenter exactement tous ces chiffres supplémentaires et arrondit au nombre le plus proche qu'il peut représenter.
EDIT: Comme expliqué plus en détail par Andrew Janke dans sa réponse à this follow-up question j'ai posté, le numéro que vous avez choisi pour e
se trouve être une expansion décimale exacte de la valeur binaire. En d'autres termes, c'est la valeur exactement représentable à laquelle un nombre à virgule flottante proche serait arrondi. Cependant, dans ce cas, quelque chose de plus de 16 chiffres au-delà de la virgule décimale n'est pas considéré significatif car il ne peut pas vraiment être représenté avec précision par un type à double précision. Par conséquent, des fonctions telles que SPRINTF ignorent automatiquement ces petites valeurs, imprimant des zéros à la place.
Cela n'a peut-être rien à voir avec votre question, mais si vous voulez les vrais chiffres de 'e' vous devriez taper' vpa ('exp (1)', 53) ' – MarkV
@MarkV: Oui, mais j'aime il. Je vous remercie! – Peterstone