Wie kann man eine Kommazahl in Label.text übertragen?

  • VB.NET

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von sonne75.

    Wie kann man eine Kommazahl in Label.text übertragen?

    Wenn in meiner NumericUpDown 6,3 steht, gibt es eine Möglichkeit ,3 von der NumericUpDown zu entfernen, so dass es dann von 6,3 zu einer 6 wird und dann noch die weg gemachte Kommazahl in Label1.Text mit hinzufügen?

    Hab einen Masseinheit Umrechner - Und bruchte jetzt noch bei den Kommazahlen von Meter in Feet Umrechner Hilfe.
    1,88 Meter ergibt ja 6 Feet 3 Inches.

    Ich würde es jetzt so machen dass bei NumericUpDownBox1 nur die FEET-Zahl steht und nebendran bei Label1.Text
    soll dann folgendes stehen: "Ft 3 In". (Ft=Feets|In = Inches)
    = "Ft KommaZahl In"

    Wenn man es dann zusammen lesen würde (Zuerst NumericUpDown, dann Label1.Text)
    würde man so lesen: 6 Feet 3 In.


    Könnte mir hier jemand behilflich sein und mir zeigen wie man das Komma + die Kommazahlvon der NumBox entfernt und
    nur den entfernten Kommazahl in Label1.text hinzufügt?

    Also einfach nur die letzte Zahl der NumericUpDown in Label1.Text kopieren und es dann von der Box entfernen.

    Tausend Dank!!!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „SEX“ ()

    Die Fragestellung ist, dass du die Stellen vor dem Komma brauchst und Stellen nach dem Komma.
    Dazu brauchst du die Round-Funktion, aber in den Klammern dann (Zahl-0,5) angeben, damit immer abgeschnitten wird. Dann hast du die Zahl, die im NumericUpDown bleibt.
    Von der ursprünglichen Zahl ziehst du die neue ab und bekommst die Nachkommastellen. Wandele sie in den String und schneide die ersten zwei Zeichen (0 und Komma) einfach ab.

    sonne75 schrieb:

    Die Fragestellung ist, dass du die Stellen vor dem Komma brauchst und Stellen nach dem Komma.
    Dazu brauchst du die Round-Funktion, aber in den Klammern dann (Zahl-0,5) angeben, damit immer abgeschnitten wird. Dann hast du die Zahl, die im NumericUpDown bleibt.
    Von der ursprünglichen Zahl ziehst du die neue ab und bekommst die Nachkommastellen. Wandele sie in den String und schneide die ersten zwei Zeichen (0 und Komma) einfach ab.
    Etwas an Logisches Denken Mangel :D
    Tausend Dank für die easy Lösung.

    Nur hab ich ein letztes Problem.
    Hab bis jetzt alles geschaft bis auf die kommazahl.

    Ich hab die 6,3 von der 6 abgezogen und eine 0,3 erhalten
    (Die 0,3 als Decimal bezeichnet = Dim KomaZahl as Decimal = Zahl1 - Zahl2)
    Wie kann ich die 0,3 in eine 3 umwandeln?

    Im Label gibt er mir jetzt NUR die 0 an. Kein Komma, Keine 3.
    Hab ich es falsch bezeichnetmit "Decimal" oder woran kann es liegen ?

    sonne75 schrieb:

    andele sie in den String und schneide die ersten zwei Zeichen (0

    VB.NET-Quellcode

    1. Dim ZahlX as Double = NumBox1.Value '= 6,03
    2. NumBox1.DecimalPlaces = 0 'Damit die ,03 verschwinden
    3. Dim ZahlY as Double = Numbox1.Value '= 6 (Weil die 0,3 verschwunden sind)
    4. Dim FeetZahl as Decimal = ZahlX - Zahl Y
    5. Label1.text = "Ft " + Feetzahl.tostring.substring(2) + " In"



    Bekomme jetzt ne Fehlermeldung: Startindex darf nicht länger als die Länge der Zeichenfolge werden...
    Ähm, wieso machst du es nicht so, wie ich es gesagt habe?
    Zahl nehmen, runden, in die NUD schreiben.
    Dann abziehen und den String bearbeiten, im vorigen Post habe ich sogar den Code reineditiert.

    Nur, weil du Dezimalstellen ausblenden, muss sich doch nicht zwangsläufig .Value ändern. Du rechnest 6,03-6,03, natürlich kommt da 0 raus.

    Aber das bringt mich auf die Idee, vor dem Substring musst du erst prüfen, ob die Länge überhaupt größer als 1 ist, sonst schreibst du 0 hin.

    VB.NET-Quellcode

    1. Dim KommaZahl = Zahl1-Zahl2
    2. Dim str = KommaZahl.ToString
    3. Label.Text= If (str.Length>1, str.Substring(2), "0")

    sonne75 schrieb:

    Ähm, wieso machst du es nicht so, wie ich es gesagt habe?
    Zahl nehmen, runden, in die NUD schreiben.
    Dann abziehen und den String bearbeiten, im vorigen Post habe ich sogar den Code reineditiert.

    Nur, weil du Dezimalstellen ausblenden, muss sich doch nicht zwangsläufig .Value ändern. Du rechnest 6,03-6,03, natürlich kommt da 0 raus.

    Aber das bringt mich auf die Idee, vor dem Substring musst du erst prüfen, ob die Länge überhaupt größer als 1 ist, sonst schreibst du 0 hin.
    Meinst du sowas das mit dem Prüfen:

    VB.NET-Quellcode

    1. If Inches.tostring.length >=0 then
    2. Label1.text = "Ft" + Inches.tostring.substring(2) + "In"
    3. Else
    4. Label1.Text = "Ft " + 0 + Inches.ToString.Substring(2) + " In"
    5. End If


    PS: Inches = ,03

    Das mit demRunden hatte er mir ne Fehlermeldung gegeben, hatte es deswegen erstmal ohne probiert.
    So hatte ichs versucht:

    VB.NET-Quellcode

    1. Dim Kommazahl as Decimal = Math.Round(ZahlX - ZahlY, 0.5)


    Da hats auch nix gebracht. gleiche fehlermeldung.
    Ich verstehe überhaupt nicht, was du machst, zumal dein Code nicht leserlich ist.
    Wieso rundest du die Kommazahl?
    Und wieso prüfst du auf die Länge >0? Natürlich ist der String bei "0" auch länger als 0 Zeichen.

    Ich habe deutlich geschrieben, dass du die erste Zahl runden musst, DANN abziehen. Was erhoffst du dir von deinem Code?

    VB.NET-Quellcode

    1. Dim Zahl1=nud.Value
    2. Dim Zahl2 = Math.Round(Zahl1-0.5)
    3. Dim KommaZahl = Zahl1-Zahl2
    4. Dim str = KommaZahl.ToString
    5. Label.Text= If (str.Length>1, str.Substring(2), "0")

    SEX schrieb:

    Wenn in meiner NumericUpDown 6,3 steht

    VB.NET-Quellcode

    1. Dim txt = "6,3"
    2. Dim val = txt.Replace(",", " Feet ") & " Inch"
    3. MessageBox.Show(val)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mal doof gefragt: Sind 10 Zoll wirklich 1 Fuß? Oder sind nicht eher 12 Zoll ein Fuß? Dann kommst du mit deiner Dezimaltrennung doch eh nicht weit, bzw. das Ergebnis dürfte reichlich falsch sein.

    Wenn du bei deiner Umrechnung in Fuß (von der ich mal freundlicherweise annehme, sie sei korrekt) also einen Dezimalwert herausbekommst, warum hantierst du dann so kompliziert mit Strings herum?

    VB.NET-Quellcode

    1. Dim feet As Double = Math.Floor(NumBox1.Value)
    2. Dim fraction as Double = NumBox1.Value - feet
    3. Dim inch As Double = fraction * 12
    4. ' erst jetzt die Control-Eigenschaften setzen
    5. NumBox1.Value = feet
    6. Label1.Text = String.Format("Ft {0} In", inch)

    Wenn dir das Format für Inch nicht zusagt, kannst du dich in der Online-Hilfe zu String.Format() schlau machen, wie du es anders formatiert bekommst.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    @ sonne75
    jetzt bekomm ich bbei deinen Code folgendes:

    NumericUpDownBox.Value = 1,9
    Label1.text = "85"Nix verändert, nur copy & paste gemacht.

    Sry dass ich die ganze Zeit was falsches gemacht hatte.



    @RodFromGermany

    RodFromGermany schrieb:

    Dim txt = "6,3"
    Dim val = txt.Replace(",", " Feet ") & " Inch"
    MessageBox.Show(val)
    Ich will ja die 6 in NumericUpDownBox haben und die 3 in Labeltext.
    Nicht beide in einem Label.


    @Arby
    Bei dir hab ich das gleiche Problem.
    Bei 1,88Meter in 6,3Ft umgewandelt zeigt er mir mti deinem Code folgendes an

    NumericUpDownBox.Value = 1,9
    Label1.Text = 88

    SEX schrieb:

    Bei dir hab ich das gleiche Problem.
    Bei 1,88Meter in 6,3Ft umgewandelt zeigt er mir mti deinem Code folgendes an

    NumericUpDownBox.Value = 1,9
    Label1.Text = 88

    Es fällt mir schwer zu glauben, dass bei einer 1:1 Kopie meines Codebeispiels wirklich nur "88" in Label1 stehen soll. Und wo soll denn die 6,3 herkommen wenn in deinem NumericUpDown-Steuerelement 1,88 steht?

    Ich hab das Gefühl, du hast uns nur die halbe "Wahrheit" erzählt. Aber im Glaskugellesen bin ich leider kein Experte.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Was willst Du im Grunde machen? Meter in Feet und Inches umrechnen? Die Feet sollen im NumericUpDown angezeigt werden und der Inch-Rest in einem Label? Ist das so richtig?
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @Arby

    Arby schrieb:

    Es fällt mir schwer zu glauben, dass bei einer 1:1 Kopie meines Codebeispiels wirklich nur "88" in Label1 stehen soll. Und wo soll denn die 6,3 herkommen wenn in deinem NumericUpDown-Steuerelement 1,88 steht?

    Ich hab das Gefühl, du hast uns nur die halbe "Wahrheit" erzählt. Aber im Glaskugellesen bin ich leider kein Experte.
    Also beim Umwandeln von 1,88meter hab ich die
    Decimalplaces = 1 gemacht (Weil Feet ist ja zwei stellig)
    und dann noch die Umwandlung über Button Klick:
    Es gibtmir dann in der NumericUpDownBox die .Value = 6,3 an.

    NumericUpDownBox steht jetzt 6,3

    Wenn ich dann Button mit deinem Code klicke gibt er mir es so an



    @SpaceyX Genau so

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private _factor As Decimal = 3.2808D
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim m As Decimal = NumericUpDown1.Value
    5. Dim result As Decimal = m * _factor
    6. Dim feet As Decimal = Math.Truncate(result)
    7. Dim inches As Decimal = (result Mod 1) * 12
    8. NumericUpDown2.Value = feet
    9. Label2.Text = inches.ToString("N2")
    10. End Sub
    11. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    SEX schrieb:

    hab ich die
    Decimalplaces = 1 gemacht (Weil Feet ist ja zwei stellig)

    Hä? Ich glaube hier liegt ein tieferes Verständnisproblem über das Umrechnen von Einheiten vor... ?(
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.

    Arby schrieb:



    Hä? Ich glaube hier liegt ein tieferes Verständnisproblem über das Umrechnen von Einheiten vor... ?(
    Ok nicht genau 2 stellig aber ich wollt nur eine 1-Stellige Kommazahl.
    Es zeigt mir einfach falsch an. Der Numbox Wert ist 100% auf 6,3 - keine 6,03,06,03 oder 06,3 sondern einfach nur 6,3


    @Sonne75
    Decimalplaces kann ich nicht weg machen bzw. zurück auf 0 weil die NumericBox eine Kommatzahl durch die Feet-Umwandlung enthält.

    SEX schrieb:

    sondern einfach nur 6,3
    Wo bleibt die Eigeninitiative?

    VB.NET-Quellcode

    1. Dim txt = "6,3"
    2. Dim parts() = txt.Split(","c)
    3. MessageBox.Show(parts(0) & Environment.NewLine & parts(1))
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!