Anfängerfragen: (Math.)Runden, 2-Nachkommastellen,

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Anfängerfragen: (Math.)Runden, 2-Nachkommastellen,

    Hallo alle zusammen,

    ich bin neu in VB und habe mir VB 2010 Express geholt.
    Mein Ziel ist es mir ein paar Tools zu basteln, welche mir das Rechnen erleichtern und immer wieder anpassbar sind.


    Ich wollte einmal von euch wissen, wo und wie ich am besten die Zahlen auf zwei Stellen nach dem Komma runde und 1.000er-Trennzeichen angewendet werden.


    Ich würde mich über Hilfe freuen.

    Grüße
    Loerrz
    Bilder
    • 1.png

      46,99 kB, 1.157×673, 376 mal angesehen
    • 2.png

      43,96 kB, 1.114×683, 721 mal angesehen
    • 3.png

      132,14 kB, 990×853, 392 mal angesehen
    Hey,

    Du solltest Option Strict On verwenden.

    Das Runden einer Gleitkommazahl ist ziemlich einfach:

    VB.NET-Quellcode

    1. System.Math.Round(Value, 2).ToString("N")

    Input: 37413818943.2738
    Output: 37.413.818.943,27

    EDIT: Du kannst Deinen Code übrigens auch hier im Forum mit dem VB.NET-Tag posten.
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Vultrax“ ()

    @loerrz In jedem Falle solltest Du die Formatierung ausschließlich bei der Ausgabe, nicht aber bei der Beechnung Deiner Daten vornehmen, es sei denn, es gibt so was wie eine "gesetzliche" Rechenvorschrift, wie z.B. bei der Zinsrechnung von Banken.
    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!
    Sorry, ich komme mir etwas dumm vor. Es ist nicht so, als hätte ich das Thema nicht gegoogelt. Bei Youtube habe ich einiges zu diesem Thema gefunden aber da konnte ich nie sehen, wie Sie ein bereits bestehenden langen code mit diesem System.Math.Round(Value, 2).ToString("N") oder ähnliche Code versehen haben.

    Um es genau zu sagen, ich weiß nicht wo ich diese Formatierung hinschreiben soll, damit es funktioniert. Kann mir das jemand sagen?
    Sobald Du z.B. TextBox1.Text = answer schreibst (buah! schlechte CE-Namensvergabe und Option Strict Off, aber egal), brauchst Du stattdessen: TextBox1.Text = answer.ToString("N2"). Damit bleibt der Wert in answer erhalten, aber die (dargestellte) Zahl in TextBox1.Text ist gerundet.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Du willst doch die Anzeige der Zahl beeinflussen. Daher musst du deine Zahl formatiert der Textbox zuweisen.
    Gewinn1.Text = Answer3.ToString(„N2“)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Also vom Runden zum App sind's schon noch ein paar Code-Zeilen. ;)

    Ich bin mir aber sicher, wenn du bereit bist selber zu lernen, und Codes die du schreibst auch zu hinterfragen, das C&P allerhöchstens als Mittel zum Zweck siehst (also zum kennenlernen) und auch hier im Forum dich den Herausforderungen der Fragen und Antworten stellst mit dem Ziel, ein technisches Problem selber zu lösen.

    Ohh ja, dann bin ich mir sicher, dass du deinem Ziel stufenweise immer näher kommst. Und wer weiss, vielleicht gehörts du ja auch mal zu einem dieser klugen Köpfe hier, und gibts selber gute Tips an Fragesteller ab.

    Ich wünsche dir viel Erfolg dazu.

    Freundliche Grüsse

    exc-jdbi
    Man sollte übrigens unbedingt unterscheiden zwischen Runden und Formatieren.
    Beim Runden kommt eine neue Zahl heraus - Information (die Nachkommastellen) gehen verloren.

    Beim Formatieren (was hier passiert) bleibt die Zahl unverändert - es wird nur eine gerundete Text-Darstellung (String) erzeugt.

    Und von YouTube-Videos ist abzuraten - die allermeisten sind der grösste Schrott. Und bestätigt sich mal wieder, wie schnell man bei Utube an schlechte Ratgeber gerät: Utube faselt von Math.Round(), was hier, beim Formatieren, ja garnet opportun ist.
    Vielen Dank für die ganzen Antworten.

    Ihr habt mir wirklich geholfen.

    @exc-jdbi Sicherlich wird es schwer werden. Ob ich die Geduld und Motivation dafür aufbringen werde? Vielleicht ist es am Ende auch einfach Sinnvoller die App machen zu lassen, weil mein eigentlicher Beruf ja etwas ganz anderes ist und ich momentan einfach nur Spass an der Sache habe. Außerdem macht jeder seine Preiskalkulation anders und daher wollte ich die Sache selbst in die Hand nehmen.
    Die App wäre ein Traum für mich :) jederzeit und überall in der Lage sein, schnelle Antworten durch eigene Tools zu haben, stelle ich mir toll vor. Vielleicht auch etwas übertrieben... wer weiß das schon

    @ErfinderDesRades die Youtube-Videos konnten mir auch gar nicht weiterhelfen.

    Vielleicht habt ihr noch allgemeine Tipps zu meinem Tool der Preis, Winkel und Gewichtsberechnung? :)

    PS: Kann mir jemand sagen, wo ich am besten nachlesen kann wie ich gewisse Formatierungen an meinen Ergebnissen in den Textboxen verändern kann?
    Wie z.B. Anlegen von roten Markierung für Pflichtfelder
    oder wenn der Rabatt 0 oder kleiner ist, dass keine Zahl im Textfeld Rabatt angezeigt wird.
    Bilder
    • 1.png

      23,52 kB, 407×741, 260 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „loerrz“ ()