Announcement

Collapse
No announcement yet.

Kennt jemand Tips zu endlos Brüchen

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

  • Kennt jemand Tips zu endlos Brüchen

    Hallo der Typ (TTime) enhält zum beispiel folgenden wert

    8 / 24 (8 Stunden) sind bei Delphi laut Debuger 0,33333333 , leider ist dies aber ein Bruch der unendlich ist, nun ist das Problem das es bei solchen Brüchen sowie auch bei 16 zu Fehlern kommt. wenn man jetzt mit 2 Multipliziert erhält man ein falschen Wert! sondern statt 16 nun 15,99 herraus. Leider ist das ja falsch, ich hab es bereits mit einigen Funktion ceil() round() und floor() versucht aber bei anderen beispielen lief es dann komplett falsch. Ich weis das Floor() die Zahl abschneidet round() rundet und abschneitet sowie ceil() aufrundet.

    PS: Ich will noch erwähne, dass ich die 0,33333333 in eine Procedure übergebe und dort es dann in Minuten in dem Fall 480 Minuten.

    diese rechne ich dann weiter.

    Wäre nett wenn wer helfen kann.

  • #2
    Das hier ist sicher nicht jedermans Lieblingsstoff:
    http://www.ulthryvasse.de/db72.html
    aber es ist genau das Problem und ein Grundproblem beim Rechnen mit Kommazahlen.
    Schöne Grüße, Mario

    Comment


    • #3
      Egal das was ich suchte hab ich nun gefunden

      function getTimeStr(mins: TDateTime): String;
      var sH, sM: Double;
      output:String;
      temp: Double;
      nH,nM,nS,nMS: Word;
      nt:Integer;
      nJJ,nMM,nDD:Word;
      iDate:TDateTime;
      begin
      DecodeTime(mins,nH,nM,nS,nMS);
      DecodeDate(mins,nJJ,nMM,nDD);
      iDate := EncodeDate(nJJ,nMM,nDD);
      nt := floor(iDate);

      sM := nt*24*60+nH*60+nM;
      sH := Floor(sM / 60);
      sM := sM - sH * 60;
      output := '';
      if sH < 10 then output := output + '0'+FloatToStr(sH) else output := output + FloatToStr(sH);
      output := output + ':';
      if sM < 10 then output := output + '0'+FloatToStr(sM) else output := output + FloatToStr(sM);
      Result := output;
      end;

      Comment

      Working...
      X