Welcome to the new DelphiDabbler Code Library Documentation.

This is a new site that's currently running on alpha code. There are going to be bugs. If you discover any, please report them on the site's issues page (GitHub account required). Thanks.

Warning: Many URLs are going to change. Refer to the README file to discover which library project's documentation has been completed.

TruncateToMultiple method

Project: Fractions

Unit: DelphiDabbler.Lib.Fractions

Record: TFraction

Applies to: ~>0.1

function TruncateToMultiple(const F: TFraction): TFraction;

Description

This method truncates the fraction to the nearest whole number multiple of the given fraction F in the direction of zero. It returns the result.

For example, if you truncate 11/16 to a whole number multiple of 1/8 the result is 5/8.

Example

This example displays a sequence of ranges of fraction that converge towards π

var
  FRangeLo, FRangeHi, FMult, FPi: TFraction;
  N: Integer;
begin
  Memo1.Clear;
  FPi := PI;  // Pi is automatically converted to fraction
  for N := 1 to 20 do
  begin
    FMult := TFraction.Create(1, N);
    FRangeLo := FPi.TruncateToMultiple(FMult);
    FRangeHi := FRangeLo + FMult; // this value will be > Pi
    // Added FMult to FRangeHi simplifies answer, so we un-simplify it
    FRangeHi := FRangeHi.Convert(FRangeLo.Denominator div FRangeHi.Denominator);
    WriteLn(
      Format(
        'Pi in falls in range [%d/%d..%d/%d]',
        [
         FRangeLo.Numerator, FRangeLo.Denominator,
         FRangeHi.Numerator, FRangeHi.Denominator
        ]
      )
    );
  end;
end;

See Also