Wert passt nicht in (Java) Long
Hallo Experten, ich schreibe grade an einem kleinen Programm und möchte dazu die Zahl 17000000000000 (17Billionen) in einer Variable Speichern.
Das eine normale integer (int) da nicht reicht war mir klar aber laut compiler bzw. NetBeans passt der Wert auch nicht in den Datentyp long.
Das verstehe ich allerdings nicht, da doch der Typ long laut aller Quellen Werte bis 9223372036854775807 (2^63-1) aufnehmen kann. Das ist klar größer als die 17Billionen wenn ich das richtig sehe.
. 17000000000000 9223372036854775807
Warum passt das dann trotzdem (angeblich) nicht? und wie kann ich das dann besser speichern? Auch bei double behauptet der compiler das würde nicht passen...
2 Antworten
Bei Zahlen, die zu groß für "int" sind, aber in "long" reinpassen, muss man ein "L" an die Zahl anhängen:
long l1=17000000000000; // falsch
long l2=17000000000000L; // richtig
Natürlich funktioniert das auch mit kleinen Zahlen, wenn sie in einem "long" gespeichert werden sollen:
long l3=123L;
Du musst ein L hinten ranstellen, damit er die Zahl als Long interpretiert und nicht als int.
Wenn du mit extrem großen Zahlen arbeitest (wo du selbst mit long an die Grenzen kommst) kannst du auch die Typen BigInteger und BigDecimal verwenden. Die haben keine Beschränkung vom Wertebereich.
Bei welchem wert fangen Informatiker an zu zählen ? Bei der null .