Gurki Geschrieben 28. September 2011 Geschrieben 28. September 2011 Hallo, ich habe folgendes Problem, ich habe in C# einen String in dem "45" steht (ohne die ""). Nun soll zwischen der 4 und der 5 ein Komma (,) gesetzt werden. D.h. als Ergebnis soll ein "4,5" herrauskommen. Mein Lösungsansatz sieht folgendermaßen aus (klappt auch so), ist aber meines Erachtens nach nicht sehr sauber und etwas deletantisch gemacht... Aber auf die Idee zu kommen war schon cool :bimei string blende_inhalt = BitConverter.ToInt32(f.Value, 0).ToString(); string blende_inhalt2 = blende_inhalt.Substring(0, 1); string blende_inhalt3 = blende_inhalt.Substring(1, 1); blende_inhalt = blende_inhalt2 + "," + blende_inhalt3; Nun meine Frage: Geht das sauberer? Wenn ja, wie :confused: Zitieren
CSharp92 Geschrieben 28. September 2011 Geschrieben 28. September 2011 Wenn die zahlen immer zweistellig sind: string ergebnis = f.Value[0] + "," + f.Value[1]; Zitieren
Guybrush Threepwood Geschrieben 28. September 2011 Geschrieben 28. September 2011 Eh warum machst du da aufwändige Stringoperationen anstatt die Zahl einfach durch 10 zu teilen? Dazu muss es natürlich eine Fließkommazahl sein. Zitieren
Termi Geschrieben 28. September 2011 Geschrieben 28. September 2011 mach doch einfach: string blende_inhalt = (Convert.ToDouble(f.Value) / 10); Du wolltest doch aus dem wert von f eine kommazahl machen, richtig? Hab grad keine IDE hier und lang kein c# mehr geschrieben, deswegen bin ich mir wegen der Syntax nicht ganz sicher Ich glaube der Konvertiert das automatisch in string beim zuweisen, ansonsten: string blende_inhalt = (Convert.ToDouble(f.Value) / 10).ToString(); Zitieren
Gurki Geschrieben 28. September 2011 Autor Geschrieben 28. September 2011 Das Problem ist, es handelt sich nicht um die Methode "Convert", sondern um die Methode "BitConvert" d.h. es werden hier die Bytes in ein Int (o. andere Typen) konvertiert. Allerdings funktioniert "meins" nur mit Int! Wenn ich BitConvert.ToDouble angebe, dann kommt eine falsche Ausgabe. Desweiteren funktioniert Wenn die zahlen immer zweistellig sind: string ergebnis = f.Value[0] + "," + f.Value[1]; leider nicht. Der Ansatz mit "/ 10" funktioniert zwar, aber "schneidet" bei einer 45 die 5 ab... (es wird nur noch die 4 angezeigt) Zitieren
Guybrush Threepwood Geschrieben 28. September 2011 Geschrieben 28. September 2011 double ergebnis = (double)BitConverter.ToInt32(f.Value, 0) / 10; Zitieren
Gurki Geschrieben 28. September 2011 Autor Geschrieben 28. September 2011 Hey, genau das habe ich auch schon probiert, leider kommt dann eine verkehrte Zahl als ergebnis. Zitieren
jjn Geschrieben 28. September 2011 Geschrieben 28. September 2011 Wenn du nur ein "," einfügen willst in einen String kannste auch die Insert Methode verwenden. String.Insert-Methode (System) Zitieren
Guybrush Threepwood Geschrieben 28. September 2011 Geschrieben 28. September 2011 Was ist denn f.Value? Zitieren
Gurki Geschrieben 28. September 2011 Autor Geschrieben 28. September 2011 f.Value ist eine Variable von PropertyItem, welches Bytedaten aus der Methode Bitmap liest. Kurz: es werden Bildinformationen ausgelesen. Wenn du nur ein "," einfügen willst in einen String kannste auch die Insert Methode verwenden. String.Insert-Methode (System) Yeah das ist es! Super, wieder was gelernt!! Zitieren
Guybrush Threepwood Geschrieben 28. September 2011 Geschrieben 28. September 2011 Ich wollte vielmehr den Wert wissen Zitieren
Sacaldur Geschrieben 29. September 2011 Geschrieben 29. September 2011 wenn "/ 10" die 5 abschneidet, warum machst du daraus keine Division mit Fließkommazahlen und schreibst "/ 10.0"? sollte die Stelle in deinem Programm einen Engpass darstellen, dann ist das effektiver, als die Zahl, die geteilt werden soll, mittels Methodenaufruf in eine Fließkommazahl umzuwandeln (ich weiß gerade nicht, ob Fließkommazahlen im Quelltext standardmäßig als floats oder als doubles angesehen werden - sollte 10.0 ein Floatwert sein, musst du noch den entsprechenden Literal verwenden oder sie casten) allerdings kann ich nicht sagen, in wie fern das besser, als eine Stringoperation ist und da du nicht sehr viele Informationen dazu gegeben hast, was du eigentlich machen willst, kann ich auch nicht sagen, ob das eine Lösung für das Problem wäre... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.