splitten von Dezimalzahl in 2 Variablen

  • VB.NET

Es gibt 29 Antworten in diesem Thema. Der letzte Beitrag () ist von Sev1990.

    splitten von Dezimalzahl in 2 Variablen

    hallö, ich bin noch recht neu was scripten im allgemeinen und vorallem VB 2010 angeht, hab jedoch schon ne Kleinigkeit gebastelt, und beim erweitern des Programms ist jetzt folgendes Problem aufgetreten:

    ich habe 6 Textboxen, 6 zur eingabe, 3 zur ausgaben, die ersten 3 sind minimalwerte, die anderen 3 maximalwerte und die 3 Ausgabeboxen sind durchschnittswerte

    jeder box ist eine variable zugeordnet, das übertragen und berechnen funktioniert einwandfrei.

    wenn in textbox 8(ausgabebox) ein wert von über 100 herauskommt muss in Textbox 7 +1 ausgeführt werden und in 8 -100, das selbe von 9 auf 8 ......wer sich das ansieht kann sich eventuell denken das es sich um die berechnung von Gold in einem MMOPRG geht^^ das ganze dient zur errechnung des durchschnittlichen erhaltenen goldes/silbers/kupfers beim Grinden in einer gewissen zeit (alle restlichen berechnungen isnd kein problem)

    so nun zum Problem an sich.

    wenn nun beim durchschnittswert eine dazimalzahl in der ausgabebox herauskommt, sagen wir minimal 2 silber maximal 7 silber, durchschnitt wäre 4,5 Silber, somit eigentlich 4 silber, 50 kupfer..........und genau das liegt der hase begraben schaff ichs irgendwie die ,5 in die andere textbox zu übertragen? (alles als integer definiert aber muss ja trotzdem richtig angezeigt werden)

    hat jemand ne idee? (ich bitte nicht um fertige codes, nur hilfe dabei was ich machen muss^^)

    wenn ihr mehr infos braucht dann stell ich die zur verfügung^^

    danke schonmal im Vorraus.
    Willkommen im Forum. :thumbup:

    Sev1990 schrieb:

    wenn ihr mehr infos braucht dann stell ich die zur verfügung^^
    Probier bitte mal, Dein Problem in 4 Sätzen zu beschreiben.
    Frag vor dem Post vielleicht Deinen großen Bruder oder Deinen Papa, weil die Dein Problem ggf. schon kennen.
    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!
    danke für die hilfe auch wenn ich draus jetz noch nicht ganz schlau werde.................

    und RodFromGermany, kein Grund gleich beleidigend zu werden, wenn du kein interesse daran hast mir einen hilfreichen Tipp zu geben dann lass doch einfach den Kommentar.


    nun gut, in 4 Sätzen:
    1. ich habe 6 werte von denen jeweils 3 zusammen gehören und die jeweils nachfolgenden Werte beim erreichen der Zahl 100 den vorherigen Wert um 1 erhöhen. (Bsp.: 100 in 3 = 1 in 2, 100 in 2 = 1 in 1)


    2. wenn ich den Durchschnittswert aus 2 Werten errechne ist dieser eventuell ein Dezimalwert welchen ich zwar als Integer ausgeben lasse was aber die Ungenauigkeit stark erhöht.


    3. ich muss nun bei einem Durchschnittswert von sagen wir 4,5 die 4,0 in Textbox 7 ausgeben und die übrigen 0,5 als Wert von 50 in Textbox 8.


    4. Ich habe versucht das irgendwie hin zu kriegen jedoch erfolglos, darum wende ich mich hier an Personen die mir hoffentlich helfen können.




    ps.: ich habe keine älteren Brüder und mein Vater weis bei einem PC höchstens wo man den Netzstecker ansteckt. wenn du der Meinung bist Personen in meinem alter haben Grundsätzlich keine Ahnung möchte ich dich bitten deine Einstellung zu überdenken.





    Hey,

    wenn ich Dich jetzt richtig verstanden habe, dann versuch das mal so.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. Dim d As Decimal = 4.5D
    4. Dim numberA As Integer = Convert.ToInt32(Math.Truncate(d))
    5. Dim numberB As Integer = Convert.ToInt32((d - numberA) * 100)
    6. MessageBox.Show("Silber: " & numberA.ToString() & " Kupfer: " & numberB.ToString())
    7. End Sub
    8. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    Sev1990 schrieb:

    und RodFromGermany, kein Grund gleich beleidigend zu werden, wenn du kein interesse daran hast mir einen hilfreichen Tipp zu geben dann lass doch einfach den Kommentar.
    Ich versuche Dir zu helfen.
    Wenn Du allerdings nicht in der Lage bist, ein Problem ordentlich zu formulieren, wirst Du auch nicht in der Lage sein, qualifizierte Hilfe von weniger qualifizierter Hilfe zu unterscheiden.
    Oder besteht Hilfe bei Dir im Post fertiger C&P-Lösungen?
    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!

    ERSC schrieb:

    ... kleiner Hinweis:
    Nochn Hinweis:
    Das funktioniert so nur bei einer Nachkommastelle.
    Ist Zahl = 4.56, ...
    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!
    entschuldige Rodfromgermany eventuell hab ich was falsch aufgefasst...........nein ich hab ja oben auch gesagt ich möchte keine fertige Lösung, ich brauche eigentlich nur sowas in der art "mit der funktion xy kannst du die zahl aufteilen".........normal find ich raus was ich brauche durch rum probieren aber ich steck irgendwie in ner Sackgasse.

    ich war der Meinung meine schilderung in der letzten Antwort wäre ausreichend, welche weiteren angaben bräuchtet ihr denn um mir die frage zu beantworten "wie spalte ich eine dezimalzahl auf 2 variablen auf so das die vorkommastelle in der einen und die nachkommastelle in der anderen Variable/Textbox wiedergegeben wird?"
    Sieh Dir mal dies an:

    VB.NET-Quellcode

    1. Dim dd As Double = 12345.6789
    2. Dim txt As String = dd.ToString
    3. Dim wert() As String = txt.Split(","c)
    4. Dim aa As String = wert(0)
    5. Dim bb As String = wert(1)
    6. MessageBox.Show(wert(0) & Environment.NewLine & wert(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!
    Es geht darum eine Lösung zu finden die unabhängig von der Systemsprache ist.
    (Ja, man könnte bei der tostring als CultureInfo de-De übergeben)
    Ich würde das eher arithmetisch lösen. Sprich einfach den Ganzzahlwert abziehen.

    VB.NET-Quellcode

    1. Dim d As Double = 1.2345
    2. Debug.WriteLine(d.ToString)
    3. Debug.WriteLine(Convert.ToInt64(d))
    4. Debug.WriteLine(d - Convert.ToInt64(d))
    Deshalb habe ich ja oben schon darauf verwiesen, dass es keinen Sinn macht erst in en String und dann wieder zurück zu konvertieren.
    mittels math.truncate den ganzzahlanteil raus holen un dann mit mododer Subtraktion und anschliessender Multiplikation den Decimalbruch in die "kleinere" Währung umwandlen