Announcement

Collapse
No announcement yet.

Rundungs Fehler? roundto(xxx,995,-2) wird zu xxx,99 statt xxx,000

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

  • Rundungs Fehler? roundto(xxx,995,-2) wird zu xxx,99 statt xxx,000

    Hallo
    kann jemand diese Problem nachvollziehen?
    roundto oder simpleroundto
    liefert bei -2 stelliger Rundung für x,995 mal x,99 oder x,00?

    Mein eigendliches Problem liegt in einer Rundungsdifferenz die bei einem vom 6 Win XP PC mit der gleichen Applikation (gleiche exe) unterschiedliche Werte liefert.
    auf 5 PC´wird 451.995 zu 452,00 gerundet(-2)
    auf einem zu 451,99 ?

    Alles XP mit allen Updates

    hier ein Beispiel

    ValueListEditor1.Values['x217']:=floattoStr(simpleRoundto(217.995,-2));
    //=218 ist OK
    ValueListEditor1.Values['x218']:=floattoStr(simpleRoundto(218.995,-2));
    //=218,99 F
    ValueListEditor1.Values['x219']:=floattoStr(simpleRoundto(219.995,-2));
    //=219,99 F

    ValueListEditor1.Values['r217']:=floattoStr(Roundto(217.995,-2));
    ValueListEditor1.Values['r218']:=floattoStr(Roundto(218.995,-2));
    ValueListEditor1.Values['r219']:=floattoStr(Roundto(219.995,-2));

  • #2
    Hallo Jörg
    ich hatte dieselben (oder ähnliche) Probleme mit der Rundung
    Genau weiß ich nicht wieso Delphi manchmal anders rundet.
    Bei manchen PC wurde abgerundet, und bei manchen aufgerundet. Angeblich soll das die alte Bankrundung sein.
    Aber ganz schlau bin ich daraus auch nicht geworden.

    Dann habe ich mir die Rundungsfunktion selber gemacht

    function Rundung ( Wert: Double;nKomma : Byte ) : Double;
    var lFaktor : double;
    begin
    begin
    lFaktor := intPower(10,nKomma);
    if Wert > 0 then
    result := trunc((Wert*lFaktor)+0.51)/lFaktor
    else result := trunc((Wert*lFaktor)-0.51)/lFaktor;
    end;
    end;

    Gruß Oswal

    Comment


    • #3
      Hmmmm,

      Delphi ist da nicht allein dran schuld!

      (Suchen im Forum bildet)
      Da gibt es reichlich Abhandlungen:
      http://www.entwickler-forum.de/webx?128@@.ee6c280
      http://www.entwickler-forum.de/webx?128@@.ee8a3a4
      http://www.entwickler-forum.de/webx?128@@.1dd04a93
      http://www.entwickler-forum.de/webx?128@@.4a872678

      Es müsste noch ein paar mehr geben, aber ich schätze, dass die Forensoftware mal wieder irgendwie neben sich steht.

      mfg
      Michael

      edit: Eigentlich sollte aus obigen Links automatisch ein anklickbarer Link gemacht werden, aber wie schon gesagt tickt die Forensoftware nicht immer so, wie sie sollte.....

      Comment


      • #4
        Hallo,

        die Wahrheit liegt einfach in der Tatsache, dass die Amerikaner anders runden als die Deutschen. Wir runden bei x,5 auf und die Amerikaner richten sich bei x,5 nach der Zahl x. Ist diese gerade wird abgerundet, ist sie ungerade, wird aufgerundet. In früheren Delphi- und Excelhilfen war das mal mit dem Zusatz "wichtig" vermerkt.

        Also unbedingt eine eigene Funktion zum Runden nutzen.

        Viele Grüße

        Klaus-Pete

        Comment

        Working...
        X