Variablen sind double precisionstandardmäßig in MATLAB, so wird die Variable e
, die Sie erstellen, um die Präzision eines Doppel begrenzt ist, die etwa 16 Stellen ist. Obwohl Sie mehr Ziffern eingegeben haben, verfügt ein Double nicht über die Genauigkeit, um alle zusätzlichen Ziffern genau darzustellen, und es wird auf die nächste Zahl abgerundet, die es darstellen kann.
EDIT: Wie ausführlicher erklärt Andrew Janke in seiner Antwort auf this follow-up question ich gepostet, die Nummer, die Sie für e
wählte nur zufällig eine exakte Dezimalentwicklung des binären Wert. Mit anderen Worten, es ist der genau darstellbare Wert, auf den eine nahegelegene Gleitkommazahl gerundet werden würde. In diesem Fall wird jedoch alles, was mehr als ungefähr 16 Stellen nach dem Dezimalpunkt ist, nicht als signifikant betrachtet, da es nicht wirklich genau durch einen Typ mit doppelter Genauigkeit dargestellt werden kann. Daher werden Funktionen wie SPRINTF diese kleinen Werte automatisch ignorieren und stattdessen Nullen drucken.
Das hat vielleicht nichts mit Ihrer Frage zu tun, aber wenn Sie die wahren Ziffern von 'e' wollen, sollten Sie stattdessen' vpa ('exp (1)', 53) eingeben ' – MarkV
@MarkV: Ja, aber ich mag es. Vielen Dank! – Peterstone