Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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:

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 :D Ich glaube der Konvertiert das automatisch in string beim zuweisen, ansonsten:

string blende_inhalt = (Convert.ToDouble(f.Value) / 10).ToString();

  • Autor

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)

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...

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.