String to Double ohne ParseDouble

Yurek

Mitglied
Hi,

ich habe hier eine Aufgabenstellung wo ich eine Gleitkommazahl die in einem String gespeichert ist in ein double Wert umrechnen soll. Auf test ob Gleitkommazahl oder nicht kann verzichetet werden. Wir dürfen dafür aber nicht die in Java vorhandene Konvertierungsfunktion also ....Double.parseDouble(string) verwenden.

Dachte eigentlich ich schau mal in der Double Klasse wie die Entwickler es dort gemacht haben. Viel habe ich dort aber nicht gefunden. Habt ihr bitte paar Ideen dazu? Bitte keine reinen Lösungen, da ich den Lerneffekt brauche. Vll erst wenn ich überhaupt nicht drauf komme. Paar Ansätze wären aber super.

Danke schon einmal!
 
Zuletzt bearbeitet:

Tarrew

Top Contributor
Vllt hilft dir das:

Wenn du einen char c hast, kannst du den dazugehörigen int Wert rauskriegen, wenn du den char '0' abziehst.
Also:
Java:
public static void main(String... args) {
		char c = '5';
		int a = c; //Ergibt 53
		int b = c - '0'; //Ergibt 5
	}
Liegt daran, dass der char '5' einen ASCII Wert von 53 hat. Der char '0' einen ASCII Wert von 48. Wenn man also von einem char die '0' abzieht, bekommt man den zugehörigen int-wert.
Vllt kommste damit weiter ;)
 
Zuletzt bearbeitet:

Ruzmanz

Top Contributor
Eine andere Schreibweie für 543.19:

= 5 * 10^2
+ 4 * 10^1
+ 3 * 10^0
+ 1 * 10^-1
+ 9 * 10 ^-2

Schau dir die Klasse String nochmal genauer an. Dort findest du alle nötigen Methoden. Es gibt viele Möglichkeiten die einzelnen Werte zu ermitteln.
 

Yurek

Mitglied
hey danke für die Antworten!

@Tarrew: das ist eine tolle idee mit den ASCII hmm ich frag mich aber wie das mit double dann funktioniert? Sry kenn mich mit ASCII noch nicht so verstehe aber was du meinst.

@Ruzmanz: stimmt daran hatte ich gar nicht gedacht.

Was wäre wenn ich den String splitten lasse in einer for schleife einem Array zuweise vll sogar mit ArrayList. Dann hätte ich die einzelnen zeichen zwar als String Array aber diesen könnte ich mit Tarrews char vorschlag in ein char und dann in ein int umwandeln und mit der Rechnung wie du sie hast dann in ein double zusammen rechnen?! Ist das überhaupt so möglich oder geht das noch einfacher?
 
Zuletzt bearbeitet:

Tarrew

Top Contributor
Du musst den String nichtmal splitten und in ein Array schreiben.

Eine for-Schleife, die Methode "charAt(...)" und die Hinweise von Ruzmanz und mir reichen schon ,)
Aber mit einem Array würde es sicherlich auch gehen.

Musst nur aufpassen, dass du das Komma (bzw den Punkt) "abfängst".
 

Yurek

Mitglied
Hi ich hab das mal so weit gemacht. Nur hängt es an der einen Stelle und ich komme da nicht weiter bzw fällt mir dazu nichts mehr ein. Undzwar geht es ja um den char '.' Dieser wird nach Abzug der char '0' zu -2. Diesen bringe ich auf 0 damit er die weitere Rechnung nicht beeinflusst. Leider springt ja aber mein exponent dann im weiteren Schleifenverlauf auf -2 und dieser haut dann vor die Zahl davor im double ein 0 rein. Mathematisch muss es ja dann auch so sien. Wie kann ich aber das verhindern bzw umrechnen?

Java:
public void stringToDouble(String doub){
		
		double zahl = 0;
		
		String[] laenge = doub.split("\\.");
		
	
		for(int i = 0; i < doub.length(); i++){
			
			char stringToChar = doub.charAt(i);
			int charToInt = stringToChar - '0';
			
			int exponent = laenge[0].length() - (i+1);
			
			
			if(charToInt == -2) {
				charToInt = 0;
			}
				
				
			zahl += charToInt * Math.pow(10, exponent);	
		}
	
	}
 

Yurek

Mitglied
hab das Problem jetzt auch noch gelöst. Bleibt jetzt nur noch das zum beispiel bei "123.4567" dann der double Wert: 123.45670000000001 raus kommt. Wäre natürlich schöner ohne die ganzen nuller. Hat einer dafür eine Lösung bitte?

Java:
public double stringToDouble(String doub){
		
		double zahl = 0;
		
		String[] laenge = doub.split("\\.");
		
	
		for(int i = 0; i < doub.length(); i++){
			
			char stringToChar = doub.charAt(i);
			int charToInt = stringToChar - '0';
			
			int exponent = laenge[0].length() - (i+1);
			
			
			if(charToInt == -2) {
				charToInt = 0;
			}
				
				
			zahl += charToInt * Math.pow(10, exponent);
			
		}
		
		
		int a = (int) zahl;
		double b = (zahl - a) * 10 + a;
		
		return b;

	}
 

Thallius

Top Contributor
Nur mal so als Tipp.

Fang hinten im String an und nimm eine Variable multiplier welche du vor der Schleife auf 1 setzt und dann nach jedem Char mit 10 multiplizierst. Dann brauchst du dieses ganze exponent geraffelt nicht...

Gruß

Claus
 

Yurek

Mitglied
Hi,

hab noch ein Problem. Ich darf kein Math.pow verwenden. Jetzt hängts bei mir total ich komm null weiter wie ich meinen Code so umgestalte das ich math.pow nicht verwende sondern es manuell rechne
 

Thallius

Top Contributor
Ganz einfach Du multiplizierst dein bisheriges ergebnis mit 10 und addierst dann das nächste zeichen. Mehr muss du gar nicht machen.
 
Zuletzt bearbeitet:

Yurek

Mitglied
ja aber da fehlt ja dann noch der exponent:

vorher: zahl += charToInt * Math.pow(10, exponent);

zahl += charToInt * 10 !!

wäre dann ja also nicht richtig oder verstehe ich dich falsch.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
JAnruVA Datentypen Berechneten String-Wert in Double umwandeln um weiter zu rechnen Allgemeine Java-Themen 7
D Double aus String auslesen Allgemeine Java-Themen 8
C String in double[][] konvertieren! Allgemeine Java-Themen 5
J String mit "," in Double Wert konvertieren Allgemeine Java-Themen 7
S String in Double - letztes Zeichen fehlt Allgemeine Java-Themen 4
H2SO3- String 1.000,00 in double umwandeln Allgemeine Java-Themen 12
J Casting Problem Object, Double und String Allgemeine Java-Themen 3
T Object auf Double, Int, String testen Allgemeine Java-Themen 5
H2SO3- großen double in string mit e umwandeln Allgemeine Java-Themen 4
A string zu double Allgemeine Java-Themen 3
padde479 String in double parsen Allgemeine Java-Themen 6
C double Zahlen mit drei NachkommaStellen in String umwandeln Allgemeine Java-Themen 2
W String to Double (landesspezifisch) Allgemeine Java-Themen 14
P Class zu Integer, String, Double etc. Allgemeine Java-Themen 11
A Probleme Umwandlung Ausdruck String in double Allgemeine Java-Themen 4
C EML Email Text in String wandeln Allgemeine Java-Themen 9
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
M String Allgemeine Java-Themen 10
M Suche nach String mit unbekannten characters Allgemeine Java-Themen 53
kodela String kann nicht zu Pfad konvertiert werden Allgemeine Java-Themen 16
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
O String in Long Hexerdezimal umwandel Allgemeine Java-Themen 14
N String vergleichen. Allgemeine Java-Themen 27
P String.replace() funktioniert nicht? Allgemeine Java-Themen 3
SaschaMeyer Arbeitet String.split falsch? Allgemeine Java-Themen 4
M Switches ohne String Allgemeine Java-Themen 18
AmsananKING String Iteration Allgemeine Java-Themen 5
S Shuffle String aus if-clause Allgemeine Java-Themen 11
Besset Variablen Ist String = "" + int inordnung? Allgemeine Java-Themen 6
M Map <Long, String> zu Map<String, Long> Allgemeine Java-Themen 9
S String Encoding Verständnisproblem Allgemeine Java-Themen 22
N Prüfen, ob ein String 2x das selbe Zeichen hat Allgemeine Java-Themen 10
SaftigMelo Bug Fixen von String-spliten Allgemeine Java-Themen 8
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
Kingamadeus2000 Alle mehrfach vorkommenden Buchstaben rekursiv aus einem String entfernen. Allgemeine Java-Themen 6
YohnsonM String - Aufteilung und Nutzung einzelner Chars Allgemeine Java-Themen 7
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
S String umbenennen: wie? Allgemeine Java-Themen 4
x46 String Format Fehler Allgemeine Java-Themen 2
S ISO 8601 -> getter / setter String Allgemeine Java-Themen 3
L String zu repräsentativen Wert Allgemeine Java-Themen 0
H Array mit dem Datentype String[] initializieren Allgemeine Java-Themen 7
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
L regex ganzer string? Allgemeine Java-Themen 2
L Ist ein string ein erlaubter variabel name? Allgemeine Java-Themen 2
Z JNA Cpp-DLL String Verwendung Allgemeine Java-Themen 2
A String auf Zahlen überprüfen Allgemeine Java-Themen 5
N String Array Eingabe Allgemeine Java-Themen 6
MiMa Datum von String zu LocalDateTime Allgemeine Java-Themen 8
W String -> byte[] -> String - Sieht jemand was ich nicht sehe? Allgemeine Java-Themen 10
R char aus String entfernen Allgemeine Java-Themen 10
LimDul Mittels Streams aus Strings A B C den String A, B und C machen Allgemeine Java-Themen 12
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
S Ini Text aus String parsen Allgemeine Java-Themen 1
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
M String lässt sich nicht Zusammenfügen Allgemeine Java-Themen 10
Drachenbauer Wie kann ich das Wort "concrete" in einem String durch ein anderes Wort ersetzen lassen? Allgemeine Java-Themen 5
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
R Variablen String mit split-Funktion aufteilen Allgemeine Java-Themen 7
F Datei in String-Array einlesen Allgemeine Java-Themen 8
S Marker aus String ermitteln Allgemeine Java-Themen 5
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
M Bei String.format ein Komma statt einem Punkt ausgeben lassen Allgemeine Java-Themen 1
S MSSQL Exception & Connection String Allgemeine Java-Themen 19
B Bei Email: FW / AW... - Hilfe bei String suche Allgemeine Java-Themen 21
J String - Vergleiche Allgemeine Java-Themen 7
K Aus String zwei Jahreszahlen auslesen Allgemeine Java-Themen 18
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
G CSV in String Allgemeine Java-Themen 7
P String-Verschlüsselung - Frage zur Sicherheit Allgemeine Java-Themen 21
K Methodenaufruf mit String / String zu Objekt konvertieren Allgemeine Java-Themen 8
D Erste Schritte Fehler mit negativen und 0 Zahlen im String Allgemeine Java-Themen 6
Xge Replace x Zeichen aus String Allgemeine Java-Themen 2
coolian warum bekomme ich ein string index out of bounds exception Allgemeine Java-Themen 17
F In String 2 Buchstaben vertauschen Allgemeine Java-Themen 2
J Class Decompile als String (Procyon) Allgemeine Java-Themen 2
I Datentypen String in class sicher verwahren Allgemeine Java-Themen 17
J Falls der String ein "X" beinhaltet Allgemeine Java-Themen 2
T String mehrere Worte Allgemeine Java-Themen 2
D String Groß-/Kleinschreibung Allgemeine Java-Themen 2
D String und Klassenvariable Allgemeine Java-Themen 6
Aruetiise Funktion(y = mx+n) in String speichern und berechnen Allgemeine Java-Themen 9
C String in Objektnamen umwandeln Allgemeine Java-Themen 3
E Variablen Aus .txt ausgelesener string mit if() überprüfen? Allgemeine Java-Themen 2
L String-Schema-Aufspaltung Allgemeine Java-Themen 2
E String in Zahl umwandeln, ohne Befehl Integer.parseInt Allgemeine Java-Themen 3
L String splitten und multiplizeren Allgemeine Java-Themen 10
G String mit umbekannter länge splitten. Allgemeine Java-Themen 2
S Einzigartigen String in Datenbank finden und löschen Allgemeine Java-Themen 23
A Byte zu String Allgemeine Java-Themen 4
B Von String zu <Objekt> ||Speichern/Laden Allgemeine Java-Themen 17
T Komplexitätsoptimierung String vergleich Allgemeine Java-Themen 4
heinz ketchup String im JLabel ausgeben und erneuern Allgemeine Java-Themen 6
S Input/Output Beste Möglichkeit einen String in einen Datei zu Schreiben Allgemeine Java-Themen 2
V Eingegeben String Splitten und in Integer umwandeln Allgemeine Java-Themen 2
L Decrypt String Allgemeine Java-Themen 1
X Variablen AtmicLong größer als String ? Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben