Announcement

Collapse
No announcement yet.

Variable vom Typ Real kfm.runden ??

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

  • Variable vom Typ Real kfm.runden ??

    Hallo,

    ich bin noch Delphi-Anfänger.

    Die Experten werden über die Frage vermutlich grinsen, aber mir ist das tats. ernst.
    Wie kann ich eine Variable vom Typ Real auf einen bestimmten Nachkommawert kfm. runden. Bsp. 12,358 auf 12,36.

    Auf ganze Zahlen ist kein Problem, ich brauche aber Nachkommastellen.

    Gibts dafür eine Funktion, die ich nicht finde, oder eine einfache Prozedur, die das Lösen könnte ??

    Danke

    Stefan

  • #2
    Ich habs gerade getestet, die funktion floattostrf macht das. Ist zwar ein wenig umständlich, funktioniert aber gut.

    hmm:=12,358;
    hmm2:=strtofloat(floattostr(hmm,fffixed,8,2)));

    hmm2 hat dann den wert 12.36 . mit dem letzten Parameter von floatttostrf kannst du die nachkommastellen bestimmen, in dem falle 2.

    mfg
    CR

    Comment


    • #3
      Hi

      <pre>

      Result := Round(Value * 100) / 100;

      </pre>

      Gruß Hage

      Comment


      • #4
        Hallo,<br>

        Hagen: Ich hoffe ich täusche mich nicht, aber Round rundet nicht kfm.

        Ich würde in diesem Fall sowieso mit dem Variablentyp Currency arbeiten. Damit hat ist das Problem von vornherein erübrigt. Oder?

        Gruß
        Fred Ziebel

        Comment


        • #5
          Hm, was verstehst Du unter kaufmännisches Runden.

          Alles was 0.5 und drüber ist wird nach oben aufgerundet. Zumindestens habe ich das so bei meiner Kaufmännischen Ausbildung gelernt !?

          Ok, es gibt den Fall das bei z.B. 4 nachkommastellen eine Stelle nach der anderen gerundet wird. Nun, ich kann Dir versichern dafür gibt es im Standard Pascal KEINE Funktion. Oder den fall das nur die letzte entscheidende nachkommatstelle gerundet wird. Also so:

          <pre>

          Result := Round(Trunc(Value * 1000) / 10) / 100;

          0.4545 := 0.454 := 0.45;

          mit normalem Round

          0.4545 := 0.455 := 0.46;

          </pre>

          Der Datentyp Currency hilft da auch nicht weiter Im grunde wird dort nur bei der Darstellung gerundet, aber NICHT live die Daten selber.

          Currency ist im übrigen NUR ein normaler Floattyp und nur dazu da, das eine DB Anwendung ein Standard -Währungssymbol anhängen kann. Aber was nützt ein Currency Typ wenn bei ALLEN Daten dieses Types IMMER die gleiche Währung des Systems benutzt wird ? Eine Währungsanwendung sollte ja mit mehreren Währungen arbeiten können. Da Currency aber intern NICHT speichert um was es für eine Währung geht, ist meiner Meinung nach Currency "schwachsinnig". Oder willst Du das Deine Anwendung die selben Rechungen auf einem Deutschen Rechner in DM und auf einem amerikainschen Rechner in Dollar ausgibt ?

          Ne, es bleibt da nur übrig, neben dem Betrag auch die Währung des Betrages zu speichern. Und das geht auch mit normalen Floats.

          Gruß Hage

          Comment


          • #6
            Sorry, ich hab's ein bißchen verdreht.
            Round rundet eine Stelle nach der anderen.

            Gruß Hage

            Comment


            • #7
              Vielen Dank.
              Die Tipps haben mir weitergeholfen

              Comment

              Working...
              X