vom Wikipedia-Artikel, Magnitude (mathematics):
In der Mathematik ist Größe die Größe eines mathematischen Objekt, eine Eigenschaft, durch die das Objekt als größer oder kleiner als andere Gegenstände der gleichen Art verglichen werden können.
In einfachem Englisch ist die Größe von 32767 32767. Die Größe entspricht dem Wert der Zahl.
In der JLS-Spezifikation, ich denke, sie verwenden Größe, um die Anzahl der Ziffern in der Zahl zu bedeuten. 32767 ist die größte Ganzzahl, die in ein vorzeichenbehaftetes 16-Bit-Feld passen kann. Wenn Sie 32767 in ein Bitfeld mit weniger als 15 Bits verschieben, ist die Nummer nicht mehr 32767. Das nennt man Verengung. Wenn Sie 32767 in ein Bitfeld mit mehr als 15 Bits (oder 16 Bits, signiert) verschieben, wird der Wert von 32767 beibehalten. Das nennt man Erweiterung.
Eine Größenordnung ist die Addition oder Subtraktion einer Ziffer von der Zahl. Zum Beispiel, Basis 10 Zahlen verwendet wird, ist 32767 eine Größenordnung höher als 3276. 3276 ist eine Größenordnung höher ist als 327.
Die Art, wie ich es sehe, bedeutet im Grunde "die abstrakte konzeptionelle Wert" im Gegensatz zu der tatsächlichen Sequenz von Bits, die verwendet wird, um den Wert darzustellen. Übrigens, "float-> double" -Umwandlung ** behält ** die Gesamtgröße nicht bei. – biziclop
@biziclop - nicht wenn es 'strictfp' ist - dann sollte es überhaupt keine Informationen verlieren:" * float to double in einem 'strictfp' Ausdruck (§15.4), verliert überhaupt keine Information, der numerische Wert ist genau erhalten. * " –
@AndyBrown Ja. Es ist einfach so, wie dies in der JLS ausgedrückt wird, ist ein bisschen komisch: zuerst stellen sie fest, dass es nicht passiert, dann fünf Absätze später fügen sie einen Vorbehalt hinzu, ähm ... tatsächlich, ohne 'strictfp' passiert es. – biziclop