Entwickler-Ecke
Basistechnologien - Problem mit Double.ToString()
SpyderZ3r0 - Mi 20.10.10 14:29
Titel: Problem mit Double.ToString()
Hi
Also ich hab eine double Variable die hat den Wert: 0.99999701976776123
Wenn ich die Variable jetzt in String umwandle Wert.toString();
bekomm ich den Wert: 0.999997019767761
Da fehlen mir jetzt die letzten stellen die brauch ich aber.
Was kann ich machen?
ich hab schon Wert.toString("0.0000000000000000000000000000000000000000"); versucht hat aber nix gebracht
kommt nur 0.99999701976776100000000000000000000000000000000 raus.
huuuuuh - Mi 20.10.10 15:20
der Computer kann nur eine Begrenzte Anzahl Nachkommastellen speichern. Das ganze ist relativ kompliziert, such einfach mal nach
GLEITKOMMAZAHL.
Musst du denn mit der Zahl rechnen? und wo kommt der Wert her?
SpyderZ3r0 - Mi 20.10.10 15:34
ich hab den wert schon im rechner in einer variablen.
Ich seh den wert ja im debug
Sobald der aber zu string convertiert wird fallen hinten zahlen weg
huuuuuh - Mi 20.10.10 16:55
wenns nur ums konvertieren und ausgeben geht:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| string swert = wert.ToString(); wert *= Math.Pow(10, swert.Length); swert = ""; while (wert > 0) { double t = wert % 10; wert -= t; wert = wert / 10; swert = ((int)t).ToString() + swert; } swert = "0."+swert; |
Ralf Jansen - Mi 20.10.10 16:58
Du solltest den richtigen Formatstring verwenden. Vermutlich
Aber den richtigen Formatstring solltest du dir nach deiner Definition von ~genau~ aus der Doku raus suchen.
Yogu - Mi 20.10.10 18:48
Bei
float's und
double's müssen einfach die letzten Stellen gerundet werden, da ansonsten seltsame Rechenfehler auftreten. Auch ein Taschenrechner speichert intern mehr Stellen, als er anzeigt.
Wenn es dir wirklich auf die Stelle genau ankommt, solltest du lieber den Typ
Decimal [
http://msdn.microsoft.com/de-de/library/system.decimal.aspx] verwenden. Im Gegensatz zu
float und
double rechnet er im Dezimalsystem und kann daher immer verlässlich angezeigt werden.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!