Skip to content

RoundTo() de System.Math vs Round()

La función RoundTo() en Delphi es una función matemática que redondea un número a una cantidad específica de decimales.

round vs roundto en Delphi

Esta función es útil en situaciones en las que deseas aproximar un número a un número específico de decimales, en lugar de simplemente truncarlo.

Es importante destacar que a diferencia de la función Round() que redondea al entero más cercano, RoundTo() permite redondear a cualquier cantidad de decimales.

La sintaxis de la función RoundTo()

RoundTo(X: Extended; Digits: ShortInt; RM: TRoundMethod = rmNearest);

donde X es el número que se va a redondear, Digits es la cantidad de decimales a los que se va a redondear y RM es el método de redondeo que se va a utilizar. Por defecto, si no se especifica un método de redondeo, se utilizará el método rmNearest (redondeo al entero más cercano).

A continuación, se presentan algunos ejemplos de cómo utilizar la función RoundTo() en Delphi.

Ejemplos de RoundTo()

Ejemplo 1: Redondeando un número a 2 decimales

var
  number: Double;
begin
  number := 3.14159265;
  number := RoundTo(number, -2); 
  Writeln(number); // imprime 3.14
end;

En este ejemplo, se está redondeando el número pi a 2 decimales utilizando la función RoundTo(). El primer parámetro de la función es el número que se va a redondear, y el segundo parámetro es el número de decimales a los que se desea redondear. En este caso, el número se redondea a 2 decimales y se imprime 3.14.

Ejemplo 2: Redondeando un número a la unidad más cercana

var
  number: Double;
begin
  number := 3.14159265;
  number := RoundTo(number, 0);
  Writeln(number); //imprime 3
end;

En este ejemplo, se está redondeando el número pi a la unidad más cercana utilizando la función RoundTo(). El primer parámetro de la función es el número que se va a redondear, y el segundo parámetro es cero, lo que indica que se desea redondear al entero más cercano. En este caso, el número se redondea a la unidad más cercana y se imprime 3.

Ejemplo 3: Redondeando un número hacia arriba o hacia abajo

var
  number: Double;
begin
  number := 3.14159265;
  number := RoundTo(number, -2, TRoundMethod.rmUp);
  Writeln(number); //imprime 3.15
  number := 3.14159265;
  number := RoundTo(number, -2, TRoundMethod.rmDown);
  Writeln(number); //imprime 3.14
end;

En este ejemplo, se está redondeando el número pi a 2 decimales utilizando la función RoundTo(). El primer parámetro de la función es el número que se va a redondear, el segundo parámetro es el número de decimales a los que se desea redondear y el tercer parámetro es el método de redondeo. Se esta utilizando TRoundMethod.rmUp para redondear hacia arriba y TRoundMethod.rmDown para redondear hacia abajo. En este caso, el primer redondeo se realiza hacia arriba y se imprime 3.15 y el segundo redondeo se realiza hacia abajo y se imprime 3.14.

En resumen, la función RoundTo() en Delphi es una herramienta útil para redondear números a una cantidad específica de decimales. Puedes utilizar esta función para aproximar números a un número específico de decimales, en lugar de simplemente truncarlos. Además, esta función permite redondear hacia arriba o hacia abajo, lo que la hace más versátil en comparación con la función Round().

Diferencia entre Round() y RoundTo()

La función Round() en Delphi es una función matemática que redondea un número al entero más cercano. Por otro lado, la función RoundTo() también redondea un número, pero a una cantidad específica de decimales.

La sintaxis de la función Round() es la siguiente:

Round(X: Extended) : Int64;

donde X es el número que se va a redondear. La función Round() no toma ningún parámetro adicional, simplemente redondea el número al entero más cercano.

Por otro lado, la sintaxis de la función RoundTo() es la siguiente:

RoundTo(X: Extended; Digits: ShortInt; RM: TRoundMethod = rmNearest);

donde X es el número que se va a redondear, Digits es la cantidad de decimales a los que se va a redondear y RM es el método de redondeo que se va a utilizar.

En resumen, la principal diferencia entre Round() y RoundTo() es que Round() redondea un número al entero más cercano, mientras que RoundTo() redondea un número a una cantidad específica de decimales y tiene la posibilidad de elegir el método de redondeo.