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: 339188648
Klick mich
Nur zur Info: Sowas soll generell über's Forum laufen, andere interessiert das evtl. auch.