Hey Leute,
ich habe ein ganz merkwürdiges Problem bei dem ich keinerlei Ansatz einer Lösung sehe da es einfach viel zu merkwürdig ist.
Ich soll ein Programm schreiben, dass Zufallszahlen generiert hierfür soll ich eine 6-stellige Zahl quadrieren.
Java errechnet aber immer irgendeinen komischen quatsch zusammen:
Java:
int a =100000;System.out.println(a*a);
Ergebnis: 1410065408 ???:L
So kann man doch nicht arbeiten! ;( Bei 5-stelligen Zahlen ist das alles kein Problem und die Ergebnisse stimmen. Liegt es am Datentyp? Können so "große" Integerwerte nicht erarbeitet werden?
Sicher.
Aber was mein Prof damit sagen wollte war lediglich, dass Problemstellungen, für die int zu klein ist, schnell auch an die Grenzen von long stoßen, weil long keineswegs die eierlegende Wollmilchganzzahl ist.
gut ... aber nach der aussage : was mit int nich geht dafür ist long auch zu klein ... sagt mir das int und long scheinbar den gleichen raum von darstellbaren zahlen haben ... also ist der satz so wie er da steht erstmal falsch ...
mit der erklärung das damit gemeint ist das long nicht die lösung ist da es grade mal doppelt so lang ist ... tja ... dass sollte man dann auch dazu schreiben
mit der erklärung das damit gemeint ist das long nicht die lösung ist da es grade mal doppelt so lang ist ... tja ... dass sollte man dann auch dazu schreiben
Bevor man BigInteger in die Hand nimmt, sollte man nachdenken was man gerade mach. Long ist in der Regel ausreichend und wird ein wenig (ein wenig viel) performanter verarbeitet...
Sicher.
Aber was mein Prof damit sagen wollte war lediglich, dass Problemstellungen, für die int zu klein ist, schnell auch an die Grenzen von long stoßen, weil long keineswegs die eierlegende Wollmilchganzzahl ist.
Noch etwas zum Thema: Was für int zu groß ist wird auch für long zu groß sein:
Klassische Rechenoperationen, wo die Zahlen schnell mal zu groß werden sind wohl Exp, Fakultät oder Multiplikation mit entsprechend großen Zahlen.
Und da stimmt es schon, daß man eine "doppelt so lange" Zahl sehr sehr schnell erreichen kann, natürlich wieder abhängig davon, was man genau rechnet.
Andere Möglichkeit, wenn die Genauigkeit nicht ganz so Entscheidend ist wäre auch zB mod 1/10^x mit x>1 zu rechnen, dann bleiben die Zahlen kleiner. (ggf dann double statt int). Verschiebt aber im wahrsten Sinne des Wortes auch bloß das Problem.