Ver Mensaje Individual
  #26  
Antiguo 30-05-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
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
    { Private declarations }
  public
    { Public declarations }
  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.
Responder Con Cita