[.Net] Zahlen "aufteilen"

mafiamix

Mitglied
Hallo,

ich habe eine Zahl in der Form, die manchmal auch etwas länger sein kann. Das heißt also, dass die Zahl immer anders sein kann (einmal z. B. 100000 und ein anderes mal 1000).
Wie ist es möglich, diese Zahl aufzuteilen, so dass sie zum Beispiel in einem Label nicht mehr so dargestellt wird: 100000, sondern 100.000.
Ich habs bereits so versucht, dass ich die "Char"-Funktion benutze, was aber nicht funktioniert. Außerdem würde es dann auch nicht mehr funktionieren, wenn sich die Zahl ändern würde und z. B. weniger Ziffern hätte (statt 100.000 z. B. nur noch 1.000).
Mein bisheriger Code war so:

Code:
     Label7.Text = Label7.Text & (Label7.Text.Replace(Label7.Text.Chars(3), "." + Label7.Text.Chars(3)))

Funktioniert aber leider nicht so. :/
Bei Google gibts auch nichts brauchbares.


LG,

mafiamix
 
Alle Datentypen mit Aussnahme von string verfügen über die ToString() Methode, mit deren Überladungen du den Wert formatieren kannst.

In deinern Fall so vielleicht.

Code:
var.ToString("#0");

Gruss
 
Also ich hab das hier mal ausprobiert:
Code:
        Label7.Text = (Label7.Text.ToString("#0"))
Geht aber auch nicht, weil dann dieser Fehler hier kommt:

Das Objekt des Typs System.String kann nicht in Typ System.IFormatProvider umgewandelt werden.
 
Habe ich doch geschrieben
Alle Datentypen mit Aussnahme von string verfügen über die ToString() Methode

Also mußt du vorher noch einen Typecast machen. Glaube so reicht es.

Code:
int zahl = Label7.Text; // Besser wäre du nimmst hier gleich den Wert aus deinen Code
Label7.Text = zahl.ToString("#0");

Schaue mal in die MSDN unter Formatprovider.
 
Zuletzt bearbeitet von einem Moderator:
Hi

Das von Kalle wird nicht funktionieren (hats jedenfalls bei mir nicht)
aber so könntest du zum Ziel kommen:
C#:
int i = 1234567890;
Console.WriteLine(i.ToString("N0"));
Ergebnis:
Code:
1.234.567.890
Bedenke, dass das Tausender Trennzeichen von den OS-Einstellungen abhängt. Ggf musst du der ToString-Methode auch noch die Culture mitteilen, die zur Formatierung genutzt werden soll.
 
Nur als kleine Anmerkung: JEDER Typ verfügt über die Methode ToString(), also auch System.String selbst, die wird schon von System.Object her vererbt!
 
Eigentlich keinen? Deswegen erbt System.String die Methode trotzdem.

Darüber hinaus hats rein theoretisch nen Sinn wenn du in einem Kontext arbeitest, in dem string-interning ausgeschaltet ist. Dann kannst die Methode dazu verwenden, dir ne Kopie von dem String zu holen.
 
Probiere mal einen String mit der ToString() und deren Formatmethode zu formatieren. Dann solltest du die Fehlermeldung von Mafiamix bekommen und genau darum ging es in diesen Beitrag.
Das Objekt des Typs System.String kann nicht in Typ System.IFormatProvider umgewandelt werden

Gruss
 
Hallo,

also mit dem Code hier
Code:
int i = 1234567890;
Console.WriteLine(i.ToString("N0"));
funktioniert das wunderbar. Danke schon mal. :)
Allerdings werden die Zahlen bei Kommastellen aufgerundet und somit die Kommastellen weggelassen. Gibts da ne Möglichkeit, dass es nicht aufgerundet wird?

Lg,

mafiamix
 

Neue Beiträge

Zurück