Berechnung verbessern

Guten Tag,

ich hoffe das passt hier einigermaßen rein.

Ich habe ein Programm geschrieben mit dem ich eine Astrophysikalische Gleichung berechnen kann. Angegeben werden Fließkommazahlen, Prozentwerte und ganze Zahlen. Der Kalkulator funktioniert, jedoch bin ich der Meinung ich hätte den Code irgendwie verbessern können.

Zum Ablauf:

Ich hole mir die Werte, ersetze Komma gegen Punkt, schreibe sie in die Variablen, parse sie in passende Datentypen, wandle die Prozentangaben in Fließkommazahlen um, Multipliziere die Werte miteinander, runde das Ergebnis um und ersetze Punkt wieder gegen Komma. So weit so gut. Funktioniert auch. Doch hätte ich da gern irgendwie eine Elegantere Methode dies zu berechnen, als jede Variable einzeln.

Hier einmal ein Beispiel mit 3 Variablen:

Code:
// Werte holen
String a1 = a1TextField.getText().replace(",", ".");
String a2 = a2TextField.getText().replace(",", ".");
String a2 = a2TextField.getText().replace(",", ".");

// Umwandlung der Strings in passende Werte, D steht für Double Wert
double a1D =  (double) Double.parseDouble(a1);
double a2D =  (double) Double.parseDouble(a2);
double a2D =  (double) Double.parseDouble(a2);

// Prozentwerte in Dezimalstellen umrechnen
a1P = a1D / 100;

// Werte Zusammen rechnen
erg = a1P * a2D * a3D

//Runden und Ausgeben
ergebnissTextField.setText(String.valueOf(Math.round(erg * 100.) / 100.).replace(".", ","));

Ich denke einmal das ist nicht zu sehr Elegant, jedoch zweckmäßig. Hat ggf jemand einen kleinen Vorschlag wie ich die ein oder andere Berechnung vielleicht zusammen fassen kann? Ich hab schon versucht beim holen der Strings die ganzen Daten zu parsen, jedoch bin ich gescheitert und hab es gelassen. :D

Danke für eure Tipps.
 

Ark

Top Contributor
Schau dir mal die Klasse java.text.DecimalFormat an, das könnte genau das sein, was du suchst.

BTW: Ich weiß zwar nicht, was ich mir unter einer "astrophysischen Gleichung" vorzustellen habe, aber es klingt, als ob du mit ziemlich "extremen" Werten bzw. hoher erforderlicher Genauigkeit zu tun hättest. In diesem Fall solltest du eventuell überlegen, ob double wirklich das Richtige für dich ist. Mehr dazu in den FAQs.

Ark
 

Landei

Top Contributor
Eventuell kann man einige Textfelder durch JSpinner ersetzen, da kann man direkt angeben, dass man Zahlen (mit einer bestimmten Schrittweite) haben will, allerdings ist die Bedienung manchmal etwas hakelig.
 
Danke für die Tipps. Die Klasse java.text.DecimalFormat schau ich mir auf jeden fall einmal an. So genau müssen die werte nicht sein, max 2 Nachkommastellen grob aufgerundet. ( Die Astrophysik kennt keine Genauigkeit :lol: )

@Landei: Das hatte ich mir für die GUI auch überlegt, jedoch kann man Prozentwerte auch im 0,1 der 0,05 Bereich angeben. Da wäre der Spinner wirklich etwas hackelig :)

Noch eine Frage dazu. Bekomme ich es irgendwie hin das ich das holen der Daten aus den Textfield und mit dem parsen zu bestimmten werten vereinen kann?

Quasi die beiden zusammen fassen.
Java:
Double a1 = a1TextField.getText().replace(",", ".");

double a1D =  (double) Double.parseDouble(a1);

Auf jeden fall werde ich mir einmal die java.text.DecimalFormat Klasse angucken, hört sich vielversprechend an.

Besten Dank.

Edit: Ich habe nun gleich einmal die klasse angeschaut. Und was soll ich sagen, sie ist klasse. Es lässt sich auf jeden fall besser arbeiten als mit Mathround.
Java:
double erg = 0;
DecimalFormat df = new DecimalFormat(",##0.000");

ergebnissTextField.setText(df.format(erg).replace(".", ","));
:toll:
 
Zuletzt bearbeitet:

jgh

Top Contributor
meinst du sowas in der Art?

Java:
	double a1 = (double) Double.parseDouble(a1TextField.getText().replace(
				",", "."));
 
meinst du sowas in der Art?

Java:
	double a1 = (double) Double.parseDouble(a1TextField.getText().replace(
				",", "."));

Genial, so meine ich das. Das macht meinen Code um ca 10cm kürzer :D
Ich hab es so ähnlich versucht, habe aber die Abfrage falsch herum gemacht, jetzt wo ich es sehe wie es richtig sein muss, wird mir einiges klar.

Vielen vielen Danke. :)
 

Ark

Top Contributor
Ohne dass ich das probiert hätte:
Java:
NumberFormat.getPercentInstance(Locale.GERMANY)
Das könnte eventuell das Punkt-Komma-Problem lösen.

Ark
 
Ohne dass ich das probiert hätte:
Java:
NumberFormat.getPercentInstance(Locale.GERMANY)
Das könnte eventuell das Punkt-Komma-Problem lösen.

Ark

Mir ist gerade aufgefallen, da ich ja schon hier:

Java:
DecimalFormat df = new DecimalFormat(",##0.000");

vorgebe wie die Ausgabe aus zu sehen hat, kann ich das repalce in der ausgabe weg lassen. Quasi so:

Java:
ergebnissTextField.setText(df.format(erg));

Ich weis nur noch nicht so recht wie ich,

Java:
NumberFormat.getPercentInstance(Locale.GERMANY)

benutzen kann um das komma gleich beim holen der daten zu dezimieren. Also ohne Replace. Wobei es ja eigentlich keinen unterschied macht, da ja eigentlich nur der Interpreter den Punkt benötigt.
 
Zuletzt bearbeitet:

Ark

Top Contributor
Ich weis nur noch nicht so recht wie ich,

Java:
NumberFormat.getPercentInstance(Locale.GERMANY)

benutzen kann um das komma gleich beim holen der daten zu dezimieren. Also ohne Replace.
Ich weiß es auch nicht, aber
Code:
java.text.NumberFormat.parse(String)
sieht spontan wie das Gesuchte aus.

Ark
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
pkm Berechnung der Fakultät von Fließkommazahlen anhand von Stirlingformel Allgemeine Java-Themen 4
I Berechnung Lagerbestands / Verfügbarkeitsprüfung Allgemeine Java-Themen 1
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
L Korrektur nach der Berechnung vornehmen, aber wie? Allgemeine Java-Themen 11
D Berechnung des Cosinus Allgemeine Java-Themen 4
H float Berechnung: Ergebnis ohne wissenschaftliche Notation Allgemeine Java-Themen 5
A Fehlerhafte Nst Berechnung einer bestimmten Fkt. (Bisektion) Allgemeine Java-Themen 10
E Berechnung des Schnittpunktes von zwei Geraden Allgemeine Java-Themen 1
P Performate Zeiteiteiteilungs- Berechnung Allgemeine Java-Themen 4
B TileMap berechnung? Allgemeine Java-Themen 8
P jodaTime Berechnung Geburtstag Allgemeine Java-Themen 1
K Probleme bei Berechnung der Komplexität Allgemeine Java-Themen 7
S Welcher Schleifen type für eine Berechnung Allgemeine Java-Themen 7
B BlueJ Potenz Berechnung Allgemeine Java-Themen 16
W Berechnung Durchschnitt mit Schleife Allgemeine Java-Themen 9
W OOP Berechnung des Skalarprodukts Allgemeine Java-Themen 9
H Demonstrationsprogramm zur CRC-Berechnung Allgemeine Java-Themen 2
D Berechnung von Sonnenauf und Sonnenuntergang Allgemeine Java-Themen 2
E Berechnung in Arraylist Allgemeine Java-Themen 10
R Eclipse Verschiedene Ergebnisse bei Berechnung eines double-Werts Allgemeine Java-Themen 5
E Falsche Ergebnisse bei PQ-Formel Berechnung Allgemeine Java-Themen 12
N Optimierung einer Berechnung Allgemeine Java-Themen 17
G java.sql Time Berechnung Allgemeine Java-Themen 6
Eldorado Berechnung von Koordinaten, die zufällig aussehen Allgemeine Java-Themen 5
B Berechnung eines sinh abbrechen, wenn 16. Nachkommastelle sich nicht mehr ändert Allgemeine Java-Themen 7
J Berechnung anhand einer XML-Datei Allgemeine Java-Themen 3
Private Void rekursive vs. iterative Lösung für Berechnung der Fakultät Allgemeine Java-Themen 12
S YUV to RGB (einfache Berechnung) Allgemeine Java-Themen 5
G Programm zur Berechnung von Summe, Median, Erwartungswert, usw von einem Array Allgemeine Java-Themen 7
C Bilder rotieren, Denkfehler in der Berechnung? Allgemeine Java-Themen 2
B Berechnung von Punkten/ If-else Strategie?! Allgemeine Java-Themen 51
T Berechnung in zweidimensionalem Array Allgemeine Java-Themen 3
X hashCode() Berechnung Allgemeine Java-Themen 5
R Tabelle - Berechnung der "Zeilenart" Allgemeine Java-Themen 2
L Berechnung mit Module bis bes.timme Zahl erreicht. Allgemeine Java-Themen 4
P CRC Berechnung Allgemeine Java-Themen 2
J berechnung von potenzen und wurzel-ziehen ohne klasse " Allgemeine Java-Themen 14
D Problem bei einer Berechnung (pow?) Allgemeine Java-Themen 3
P Java-Programm zur Berechnung globaler Minimas und Maximas-ff Allgemeine Java-Themen 4
B Primzahlen Berechnung optimieren Allgemeine Java-Themen 7
A Probleme bei der Berechnung von Pi! Java Problem Allgemeine Java-Themen 2
M Servlet --> Berechnung --> Timeout vom Proxy oder IE!? Allgemeine Java-Themen 7
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
H Performance einer Monte-Carlo-Simulation verbessern Allgemeine Java-Themen 6
Scream_ilias brute force methode verbessern? Allgemeine Java-Themen 6
J Threads verbessern die Performance NICHT ? Allgemeine Java-Themen 8
A Java Programm verbessern/vereinfachen Allgemeine Java-Themen 20
H Javakenntnisse verbessern Allgemeine Java-Themen 5
A Salt Erstellung verbessern Allgemeine Java-Themen 7
V Kollisionserkennung beschleunigen/verbessern? :) Allgemeine Java-Themen 14
T MVC - Controller verbessern Allgemeine Java-Themen 9
J java vnc client verbessern: KeyEvent.VK_ALT keine Wirkung? Allgemeine Java-Themen 12
T Algorithmus verbessern Allgemeine Java-Themen 10
C JTable verbessern Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben