RoundTo

Riddle
RoundTo
Moduł: Math
```delphi function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double; ``` Funkcja RoundTo zaokrągla podaną liczbę rzeczywistą do określonej w drugim parametrze liczby liczb przed przecinkiem i zwraca ją w postaci liczby zmiennoprzecinkowej.

Wywołanie funkcji RoundTo(?, 0); jest równoważne z Round(?);

Przykład:

program Foo;
 
uses
  SysUtils, Math;

{$APPTYPE CONSOLE}
 
var
  aNumber: Double;

begin
  aNumber := 654.94581;
  WriteLn(RoundTo(aNumber, 3));    // 1000
  WriteLn(RoundTo(aNumber, 2));    // 700
  WriteLn(RoundTo(aNumber, 1));    // 650
  WriteLn(RoundTo(aNumber, 0));    // 655
  WriteLn(RoundTo(aNumber, -1));   // 654.9
  WriteLn(RoundTo(aNumber, -2));   // 654.95
  WriteLn(RoundTo(aNumber, -3));   // 654.946
end;

Drugi parametr jest typu TRoundToRange którego zakres wynosi -37..37
Takie wywołanie

RoundTo(aNumber, 38);

da nam błąd Constant expression violates subrange bounds;

ale można zrobić tak

RoundTo(aNumber, TRoundToRange(38));

co jest bez sensu bo delphi nie wspiera takich dużych liczb.

Zobacz też:

0 komentarzy