Addition mit hohen Zahlen - Hilfe

MKrause

Mitglied
Moin!
Ich steige gerade von VB.Net auf Java um und versuche gerade, alle ungeraden Zahlen von 1 bis 489511 miteinander zu addieren und das Endergebnis auszugeben. Das klappt bisher auch ganz gut (denke ich), habe aber ein paar Fragen.

Java:
public class Test {

	public static void main(String[] args) {
		
		float current = 1;
		float complete = 0;
		
		while(current < 489512){
			complete = complete + current;
			current = current + 2;
			System.out.println(complete);
		}
	}

}

Der letzte Output ist dieser:
5.9905499E10

Meine Fragen:
1) Ist es richtig, dass ich "Float" als Datentyp gewählt habe? Meines Wissens nach können die Integers nicht so große Zahlen aufbewahren, daher habe ich testweise Float genommen und es scheint ja zu funktionieren.
2) Wie genau "übersetzt" man denn die E10 am Ende einer Zahl? Was die zu bedeuten hat weiß ich zwar (1^10, dh 1 Milliarde) aber weiß ich nicht, wo genau ich was ändern muss um eine für den Laien lesbare Zahl zu erhalten.
3) Stimmt das Programm generell so, dh. führt es die Rechnung durch, die ich am Anfang dieses Threads gesagt habe?

MfG!
 
Moin,

'float' sind Fließkommazahlen --> ist also ziemlich peng 😀

Versuch es mal mit dem Datentyp 'long', der kann (normalerweise) über 4 Mrd. aufnehmen.
Ggf. gibt es dann auch noch 'BigInt' :rtfm:

Gruß
Klaus
 
1) float ist hier falsch gewählt, denn es ist eine Fließkommazahl. Wenn int nicht ausreicht, dann nimm long, wenn das nicht ausreicht, dann nimm BigInteger

2) 1e10 = 1*10^10 (Scientific Notation)

3) geht kürzer, macht das selbe

Java:
long sum = 0L;
for(int i = 1; i < 489512; i+=2) {
  sum += i;
}
System.out.println(sum);
 
3) geht kürzer, macht das selbe

Java:
long sum = 0L;
for(int i = 1; i < 489512; i+=2) {
  sum += i;
}
System.out.println(sum);

Es geht sogar noch kürzer mit dem kleinen Gaus:

7a90161e8f.png

Also ist die Summe der ersten n Quadratzahlen gerade n^2.


(Nur so, damit man es mal gesehen hat, ... natürlich ist es wichtig mit Schleifen umzugehen zu können. )
 
Zuletzt bearbeitet:
Habe gestern dann auch noch den long Datentyp gefunden, den hatte ich wohl übersehen. Mit dem haut's dann auch wirklich hin. Lese mich nachher nochmal in die genauen Anwendungen der jeweiligen Datentypen bei Zahlen ein.

Danke euch trozdem! 🙂
 

Zurück
Oben