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.

RoundToMultiple method

Project: Fractions

Unit: DelphiDabbler.Lib.Fractions

Record: TFraction

Applies to: ~>0.1

function RoundToMultiple(const F: TFraction): TFraction;

Description

This method rounds the fraction to the nearest whole number multiple of the given fraction F and returns the result.

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

RoundToMultiple can be useful if you have performed a calculation using fractions but want the result accurate to a certain degree, for example the nearest eighths or sixteenths. It is also useful for converting floating point numbers to fractions with the required accuracy, for example to express π as a fraction to the nearest seventh.

Example

Express π in terms of fractions to the nearest 1/N where N = 1 to 10.

var
  FPi, FRound: TFraction;
  N: Integer;
begin
  FPi := PI;  // Pi is automatically converted to fraction
  for N := 1 to 10 do
  begin
    FRound := FPi.RoundToMultiple(TFraction.Create(1, N));
    WriteLn(
      Format(
        'Pi in terms of 1/%d = %d/%d',
        [N, FRound.Numerator, FRound.Denominator]
      )
    );
  end;
end;

See Also