Rechnen mit sehr kleinen Zahlen

PetBe

Mitglied
Hallo Leute,

bei der Programmierung einer Simulation mit Java bin ich auf ein arithmetisches Problem gestoßen. Beim Rechnen mit sehr kleinen Zahlen, wird die Division nicht korrekt durchgeführt. Hier ist mal ein Besipiel:
double test = ( 36.02/(3600000*1000));
double test2 = ( 36/(3600000*1000));

Die Variable test bekommt fälschlicherweise den Wert -5.18297770374507E-8 (also einen negativen Wert) zugeordnet und die Variable test2 bekommt den Wert 0.0 zugeordnet. Das ist aber beides nicht der richtige Wert. Es müsste ein sehr kleiner positiver Wert rauskommen. Wie kann ich das mit Java bewerstelligen, dass solche arithmetische Operationen auch die richtigen Ergebnisse liefern? Vielen Dank im Voraus für eure Hilfe.
 

httpdigest

Top Contributor
Das liegt daran, dass der Nenner ein `int` ist, der überläuft. Verwende einfach:
Java:
double test = 36.02 / (3600000.0 * 1000);
double test2 = 36 / (3600000.0 * 1000);
Oder: Einige Leute (mich eingeschlossen) finden die wissenschaftliche Schreibweise für große und kleine Zahlen einfacher zu lesen (man muss nicht die Anzahl der Nulle zählen):
Java:
double test = 36.02 * 3.6E-9;
double test2 = 36 * 3.6E-9;
 

abc66

Top Contributor
Ich nicht. Es heißt immer, Programmcode solle gesprächig sein, dann kann man die Nullen auch ausschreiben...

Weiterhin sei nicht unter den Teppich gekehrt, das man ausschließlich double Konstanten verwenden sollte, der Übersicht halber. ;)
 

httpdigest

Top Contributor
Ja, das ist sicherlich Ansichtssache und auch zum größten Teil Gewohnheit, aber ich schüttel immer den Kopf, wenn ich Leute sehe, die z.B. Nanosekunden (wie sie etwa durch System.nanoTime() ausgegeben werden) in Sekunden umrechnen und dabei folgendes schreiben:
Java:
long nanos = System.nanoTime();
double seconds = nanos / 1000000000.0;
Das ist meiner Meinung nach einfach nur unnötig. Nano = 10^-9, also doch bitte auch:
Java:
long nanos = System.nanoTime();
double seconds = nanos * 1E-9;
Und 1E-9 ist doch nun wirklich sehr viel sprechender (das schreit ja geradezu "Neun Nullen nach dem Dezimalpunkt!") als 1000000000.0.....
 

abc66

Top Contributor
Was hältst du von 1_000_000_000.0 ? :D

... System.out.println(1_000_000_000.0); gibt 1.0E9 aus und schont mMn. etwas die Augen.

Aber ich verstehe deinen Punkt... Das ist so ähnlich wie der IBAN-Wahnsinn.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Rechnen mit sehr kleinen Zahlen Allgemeine Java-Themen 8
JAnruVA Datentypen Berechneten String-Wert in Double umwandeln um weiter zu rechnen Allgemeine Java-Themen 7
Mikejr Recursion mit Zinseszins rechnen Allgemeine Java-Themen 20
B Parameter Konstruktor plus rechnen Allgemeine Java-Themen 6
KeexZDeveoper Schnelleres Rechnen Allgemeine Java-Themen 8
J-Gallus Erste Schritte Wahrscheinlich Anfänger Fehler beim rechnen. Falsches Ergebnis. Allgemeine Java-Themen 9
A Mit dem letzten bis zum ersten Wert aus Array rechnen Allgemeine Java-Themen 15
M Probleme beim rechnen, bei Zahlen mit führenden Nullen. Allgemeine Java-Themen 7
J zu blöd zum rechnen Allgemeine Java-Themen 7
F Taschenrechner Term rechnen Allgemeine Java-Themen 4
S Java rechnen mit unbekannten Allgemeine Java-Themen 11
M Rechnen mit kleinen Zahlen langsamer!? Allgemeine Java-Themen 11
B Fehler beim Rechnen mit Floats Allgemeine Java-Themen 3
B Rechnen mit mehreren Variablen Allgemeine Java-Themen 2
M In einer Tabelle rechnen Allgemeine Java-Themen 12
H Mit String rechnen Allgemeine Java-Themen 14
hdi Probleme beim Rechnen mit BigDecimal Allgemeine Java-Themen 5
E Konstante Zahl Threads parallel rechnen lassen Allgemeine Java-Themen 6
O "Rechnen" mit Farben Allgemeine Java-Themen 12
T Mit Datum und Zeit rechnen Allgemeine Java-Themen 8
G Probleme mir Rechnen Allgemeine Java-Themen 5
P rechnen mit extrem grossen zahlen Allgemeine Java-Themen 2
H Komplexes Rechnen mit Java Allgemeine Java-Themen 6
S Rechnen mit float Zahlen Allgemeine Java-Themen 2
O Java zu blöde um 1-1 zu rechnen?? Allgemeine Java-Themen 20
B Sehr großen Graph mit Verbindungen bauen und minimieren? Allgemeine Java-Themen 35
javamax2000 Sehr sonderbares Verhalten Allgemeine Java-Themen 6
B Welcher Datentyp für sehr große Zahlenbereiche? Allgemeine Java-Themen 1
R JDK installieren OpenJDK-Aufruf sehr langsam Allgemeine Java-Themen 4
Thallius String erzeugen sehr langsam Allgemeine Java-Themen 16
D Verwaltung von sehr vielen Objekten Allgemeine Java-Themen 12
S JNLP startet seit 1.8.0_31 sehr langsam + Windows-Systemverzeichnis Allgemeine Java-Themen 3
Creylon Java verursacht sehr starkes ruckeln Allgemeine Java-Themen 5
N Bin to Dez und umgekehrt mit sehr großen Zahlen Allgemeine Java-Themen 2
T Gleiche Operation dauert teilweise sehr lange Allgemeine Java-Themen 12
M Externe Jar sehr langsam Allgemeine Java-Themen 23
M JUnit & Multithreading - sehr seltener Fehler Allgemeine Java-Themen 3
H Sehr viele Threads effizient Verwalten Allgemeine Java-Themen 13
J Laden von JAR Files geht ohne ADMIN Rechte sehr langsam Allgemeine Java-Themen 6
H Kopieren sehr langsam Allgemeine Java-Themen 5
B Cipher.getInstance Aufruf sehr langsam Allgemeine Java-Themen 2
nrg Arbeiten mit sehr großen CSV Dateien Allgemeine Java-Themen 20
K replaceAll bei sehr großen String Allgemeine Java-Themen 3
B Eingabemaske Komponenten aktivieren, funktionert nicht (sehr kurios) Allgemeine Java-Themen 2
hdi Heap Sapce Error bei sehr großem String Allgemeine Java-Themen 5
G RXTX library braucht sehr lange zum laden. Ist das normal? Allgemeine Java-Themen 8
L Java 1.5 - Anwendung unter 1.6 JRE sehr langsam geworden Allgemeine Java-Themen 8
O Speicherverbrauch von Java / VM sehr hoch? Allgemeine Java-Themen 27
G Lesen von sehr großen dateien Allgemeine Java-Themen 8
M String zusammensetzen->sehr langsam Allgemeine Java-Themen 3
G Sehr sehr merkwürdige Ereignisse mit Fibonacci Programm Allgemeine Java-Themen 6
G Sehr gutes Java-Framework(Gui-Builder) auf XML-Basis gesucht Allgemeine Java-Themen 21
E String.replace für (sehr) großen Text Allgemeine Java-Themen 9
T [SVNKit] Commit sehr langsam. Allgemeine Java-Themen 7
G Arraylist statt List - Sehr schlimm? Allgemeine Java-Themen 8
F JAVA Applikationen starten sehr langsam Allgemeine Java-Themen 14
D Datei öffnung sehr langsam Allgemeine Java-Themen 17
G Neue Warenwirtschaft aber sehr langsam! Allgemeine Java-Themen 3
H Entpacken sehr langsam Allgemeine Java-Themen 10
Bleiglanz Benchmarks sind sehr schwierig Allgemeine Java-Themen 2
turmaline OOP zwei gleiche Methoden mit kleinen Unterschieden Allgemeine Java-Themen 15
Developer_X Brauche Hilfe bei meinem kleinen hilfsprogramm Allgemeine Java-Themen 4
E verstehe fehler bei meinem (kleinen) programm nicht Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben