Announcement

Collapse
No announcement yet.

Anfängerfrage: Runden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anfängerfrage: Runden

    Hallo,

    wieso rundet C# bei 5 noch nicht auf?
    <PRE>decimal.Round(2.345, 2); //Ergebniss: 2.34
    decimal.Round(2.3451, 2); //Ergebniss: 2.35</PRE>
    Eine kaufmännische Rundung macht aus 2.345 normalerweise doch 2.35.<BR>
    Welche Möglichkeit gibt es im C#?<BR>

  • #2
    Hallo H.,<br>
    in der SDK Doku steht folgender Satz als Hinweis:
    <i>"Wenn <b>d</b> [Ein zu rundender Decimal-Wert] sich genau in der Mitte zwischen zwei Rundungswerten befindet, ist das Ergebnis der Rundungswert, dessen am weitesten rechts stehende Dezimalziffer gerade ist."</i> Ich weiß zwar nicht ganu was es bedeutet...

    Aber es gibt ja noch die Klasse <i>Math</i> die ebenfalls eine Methode Round liefert: decimal <b>Round</b>(decimal d, int decimals)

    Doch auch hier ist folgendes zu lesen: <i>Das Verhalten dieser Methode entspricht dem <b>Standard IEEE 754</b>, Abschnitt 4. Diese Art von Rundung wird zuweilen als Rundung auf den nächsten Wert bzw. unverzerrte Rundung (Banker's Rounding) bezeichnet. [...]</i>

    Und weiter:<br>
    <i>
    Das folgende Codebeispiel veranschaulicht die Rundung auf den nächsten Wert.<br>
    [C#] <br>
    Math.Round(3.44, 1); //Returns 3.4.<br>
    Math.Round(3.45, 1); //Returns 3.4.<br>
    Math.Round(3.46, 1); //Returns 3.5.<br>
    </i>

    Damit ist wohl gesagt, dass es sich um keinen Bug, sondern um eine offiziell dokumentiertes Verhalten handelt.

    Ohh...

    Comment


    • #3
      Danke für Ihre Teilnahme an meinem Problem!<P>
      Schade ist nur, daß über, meines Erachtens sehr wichtige Thema, kaufmännisches Runden, kein Wort in der Doku verloren wird.<P>
      Zu mindest ist es mir noch nicht gelungen, irgend wo etwas über diese Thema zu finden<P>
      Mir scheint es fast, daß man sich diese Funktion/Befehl selber basteln muß.<P>
      Wenn dem so ist, dann ist C# wohl nicht die ideale Sprache für kaufmännische Anwendungen, wenn sie nicht einmal so eine Funktion liefert. Oder?<P&gt

      Comment


      • #4
        Wenn es wirklich nicht im Framework unterstützt wird, dann muss aber zumindest ein 3rd-Party Tool geben, was dieses unterstützt.

        Immerhin handelt es sich hier um eine nicht unwesentliche Funktion

        Comment


        • #5
          Hallo, auch ich habe festgestellt, dass .net nicht die für kaufmännische Anwendungen notwendigen Rundungsfunktionen bietet und habe die notwendige Funktionalität selber erstellt.
          Wer Interesse hat, dem kann ich die entsprechende DLL zukommen lassen. Schickt mir einfach eine Mail auf [email protected].
          Ich werde Sie Euch dann via Mail zukommen lassen

          Comment

          Working...
          X