Werte immer aufrunden z.B. (0,11 = 0,20), (0,22 = 0,30), (0,35 = 0,40) ?

  • VB.NET

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

    AliveDevil schrieb:

    zu 1.: k. Dann eben
    Missverständnis, ich hatte da Math.Mod() im Auge, gibt es aber nicht.
    @All:
    Ich hab mal in die Mod-Hilfe geschaut und ihr entnommen, dass es günstiger ist, dieses Problem in Decimal statt Double oder Single zu rechnen:

    VB.NET-Quellcode

    1. firstResult = 2.0 Mod 0.2
    2. ' Double operation returns 0.2, not 0.
    3. secondResult = 2D Mod 0.2D
    4. ' Decimal operation returns 0.
    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!
    Du hättest sagen müssen, dass NUR die 2. Nachkommerstelle berücksichtig werden soll - habe meine Funktion dahergehend erweitert (hat ein anderer User aber auch schon gepostet):

    VB.NET-Quellcode

    1. Function MeinAufrunder(ByVal val As Single) As Single
    2. Dim tmp As Single = CSng(Math.Ceiling(Math.Floor(val * 100) / 10))
    3. Return tmp / 10
    4. End Function


    Ergebnis:

    0,34 -> 0,4
    0,62 -> 0,7
    0,99 -> 1
    5,123 -> 5,2
    7,604 -> 7,6
    99,0001 -> 99
    ja genau :thumbsup: GELÖST!

    programm sieht jetzt so aus und FUNKTIONIERT so wie es soll :)

    Dim zahl1, zahl2, ergeb1, ergeb2 As Double
    zahl1 = TextBox1.Text
    zahl2 = TextBox2.Text
    ergeb1 = zahl1 * zahl2

    Dim tmp As Single = CSng(Math.Ceiling(Math.Floor(Val(ergeb1) * 100) / 10))
    ergeb2 = tmp / 10
    TextBox3.Text = Format(ergeb2, "##,##0.00")

    Besten Dank!

    ...das kommt davon 4 jahre nix mehr gemacht in VB
    Na fein. :D
    Dann drücke mal bitte auf den Erledigt-Button.
    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 für's ausgraben!

    Hätte es nicht gereicht einfach nur +0,04 zu rechnen und dann mit Math.Round() auf eine Stelle zu runden und dann in der Ausgabe die fehlende Null anhängen?
    __________________________
    01:
    CLS : SCREEN 12
    02: LINE (0, 20)-(640, 22), 15, BF
    03: ECHO "MFG HASSOWUFF"
    [F5]
    Wenn es für Deinen Fall reicht, mach doch. Da der TE schon längst nicht mehr im Forum aktiv ist und der Thread 8 Jahre alt ist, werden wir es nicht erfahren, ob es ihm geholfen hätte. Von daher: Bitte keine alten Problemthreads ausgraben, wenn Du sie nicht selbst erstellt hast.
    *Thread closed*
    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.