Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Rechner machen mit Brüche

  Alt 18. Dez 2005, 11:00
Zitat von OwNy:
ohje :/ das versteh ich nit
welchen code muss ich nehmen? den oberen oder unteren oder beide?
mfg
Ich verstehe dein Problem so, dass du eine Dezimalzahl hast und diese einfach in einen Bruch umwandeln möchtest.

Wie das geht hast Mystic ja schon geschrieben. Für dich hier mal der Implementation-Teil einer Unit im Zusammenhang, dass du siehst, wie man das anwendet:

Delphi-Quellcode:
implementation

{$R *.dfm}

type
  TFraction = record
    Numerator: Integer;
    Denominator: Integer;
  end;

function Dec2Frac(const Decimal, Accuracy: Double): TFraction;
var
  tempd: Double;
  f: TFraction;
  neg: Shortint;
begin
  f.Numerator := 0;
  f.Denominator := 1;
  if Decimal < 0 then
    neg := -1
  else
    neg := 1;
  tempd := 0;
  while Abs(tempd - Decimal) > Accuracy do begin
    if Abs(tempd) > Abs(Decimal) then
      inc(f.Denominator)
    else
      f.Numerator := f.Numerator + neg;
    tempd := f.Numerator / f.Denominator;
  end;
  //tempi := gcd(f.Numerator,f.Denominator);
  Result := f;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Decimal: Double;
  Rational: TFraction;
begin
  // Werte zuweisen:
  Decimal := 5.46;

  // Umwandlung in einen Bruch
  // je kleiner der 2. Parameter, desto genauer das Ergebnis und desto länger die Rechenzeit
  Rational := Dec2Frac(Decimal, 0.000001);

  // Ergebnis anzeigen (Ausgabe für 5.46: 273/50):
  ShowMessage('Numerator: ' + IntToStr(Rational.Numerator) + #13#10 +
              'Denumerator: ' + IntToStr(Rational.Denominator));
end;

Nachtrag:

Zitat von OwNy:
entweder per replys oder per icq: 339188648Klick mich
Nur zur Info: Sowas soll generell über's Forum laufen, andere interessiert das evtl. auch.
  Mit Zitat antworten Zitat