Entwickler-Ecke
Basistechnologien - Anzahl von Nachkommastellen eines Strings ermitteln
Sebbi2712 - Mo 13.07.09 12:00
Titel: Anzahl von Nachkommastellen eines Strings ermitteln
Hallo Leute.
Im Internet konnte ich leider keine Homepage finden, in der erkärt wird, wie man die Anzahl der Nachkommastellen eines Double ermitteln kann.
Beispiel:
double Zahl 1 = 12,5498
int AnzNullstellen = .......................................
--> Ergebnis 4
Habt Ihr da eine Idee, wie man das Problem lösen kann?
Gruss
Sebastian
Moderiert von
Christian S.: Topic aus IO, XML und Registry verschoben am Mo 13.07.2009 um 12:44
JüTho - Mo 13.07.09 12:12
Wie kommst du nur darauf, dass das etwas mit IO oder XML oder Registry zu tun hat... :roll:
Die Frage kann natürlich nicht beantwortet werden. Ein double hat keine Nachkommastellen, sondern ist "irgendein" fester Wert. Ein String hat auch keine Nachkommastellen, weil es für ihn "irgendwelche" Zeichen sind und er nicht zwischen 'a', '1' und '.' oder ',' unterscheidet.
Wenn du es unbedingt wissen willst, dann kannst du es selbst ausrechnen: Länge des Strings, Position des Dezimaltrenners (welcher das ist, ergibt sich aus NumberFormatInfo.NumberDecimalSeparator) - dann einfache Subtraktion.
Jürgen
Sebbi2712 - Mo 13.07.09 12:40
Hi Jürgen.
Danke für die schnelle Antwort.
Mir ist ein Fehler unterlaufen....Es handelt sich um eine Zahl des Typs double!
String wurde hier fälschlicherweise genannt, wird auch gleich im ersten Beitrag geändert..
Gibts dann eine Möglichkeit die Nachkommastellen des double-Typs zu ermitteln, oder muss dieser erst in String umgewandelt werden, sodass man die Länge des Strings und die Pos. des Dezimaltrenners ausrechnt...?
Gruss
Sebastian
Kha - Mo 13.07.09 13:53
Wo kommen denn diese Zahlen her und wofür benötigst du die Anzahl Nachkommastellen?
Grundsätzlich ist das Problem unlösbar, da du dafür ja eine absolut exakte Darstellung der Zahl benötigst, Dezimalzahlen im Binärsystem oft aber periodisch sind und daher nur angenähert werden können.
Vielleicht hätte man mit System.Decimal eine Chance, aber dazu müssten wir mehr über dein Problem wissen.
Sebbi2712 - Mo 13.07.09 15:16
Die Daten werden aus einer externen *.dat Datei eingelesen.
Man hat jeweils ein Koordinatenpaar aus X,Y und Z.
Mit den Werten wird anschliend verarbeitet, d.h. man führt Additionen, Winkelverschiebungen, etc.... aus..
Hab habe es nun so gemacht:
Werte werden ja als "string" eingelesen.
Diesen String nehem ich, Zähle die Anzahl der Ziffern. Anschließend suche ich nach dem Dezimaltrennzeichen ".". Parallel dazu läuft ein counter.
Am Schluss rechne ich Stringlänge - counter - 1, und schon habe ich die Anzahl meiner Nullstellen....
Zur Berechnung wandle ich meine Koordinaten in den Typ "double" um.
Jetzt der eigentliche Grund, warum ich die Nullstellen zählen muss:
Bei der anschließenden Dateiausgabe (*.dat - File) soll die Anzahl der Nachkommastellen wieder wie bei der Originaldatei sein.
Im Moment weiss ich aber leider nicht, wie man das Ergebnis des berechneten Dezimal-Wertes auf die gewünschte Anstall von Nachkommastellen rundet.
Nemag - Mo 13.07.09 16:13
Sebbi2712 hat folgendes geschrieben : |
Im Moment weiss ich aber leider nicht, wie man das Ergebnis des berechneten Dezimal-Wertes auf die gewünschte Anstall von Nachkommastellen rundet. |
C#-Quelltext
1: 2:
| Decimal.Round(decimal, int); Double.Round(double,int); |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!