Chaja,
Cita:
Empezado por Chaja
...uso RoundTo...pero a veces me falla...cual es la rutina mas acertada para usar...ejemplo tengo una cifra que es 45,555 y si la redondo a dos me queda 45,55...
|
Revisa este código:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function RoundTo(F: single; D: integer): double;
var
P : double;
begin
P := Power(10, D);
Result := Trunc(F * P + 0.5) / P;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
N1, N2 : Double;
MsgUsr : String;
begin
N1 := 45.555;
N2 := RoundTo(N1,2);
MsgUsr := 'N1 (Valor Original) = %g ' + #13#10 + #13#10 + 'N2 (Valor redondeado a 2 decimales) = %g';
MessageDlg(Format(MsgUsr,[N1,N2]),mtInformation,[mbOK],0);
N1 := 3.1415927;
N2 := RoundTo(N1,3);
MsgUsr := 'N1 (Valor Original) = %g ' + #13#10 + #13#10 + 'N2 (Valor redondeado a 3 decimales) = %g';
MessageDlg(Format(MsgUsr,[N1,N2]),mtInformation,[mbOK],0);
end;
end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32,
Permite realizar redondeos por exceso, como se muestra en la siguiente imagen:
Nota : La función de redondeo del ejemplo fue tomada de :
Como redondear a partir del numero 5 .
Espero sea útil
Nelson.