Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 13-10-2005
Avatar de Dexter182
Dexter182 Dexter182 is offline
Miembro
 
Registrado: jul 2005
Ubicación: Argentina
Posts: 95
Poder: 22
Dexter182 Va por buen camino
Perdón por la demora

Cita:
Empezado por Sotrono
Hola, la explicacion anterior fue bastante pobre...
Hice esta funcion que por los resultados que me dio parece funcionar:

Código Delphi [-]
function TForm1.RedondearPesos(var Numero: Real): Real;
 
function Redondear(Valor: Real; Redondeo: Integer):Real;
//Esta funcion (Redondear) fue sacada de Trucomania
begin
Redondear := Round(Valor * Power(10, Redondeo)) / Power(10,Redondeo);
end;
 
var
num: string;
i: integer;
begin
numero:= Redondear(numero, 2);
if Frac(numero) > 0.95 then
numero:= Redondear(numero,0);
num:= FloatToStr(numero);
for i:= Length(num) downto (Pos(',', num) + 2) do
if (num[i] = '4') or (num[i] = '6') then
num[i]:= '5'
else if (num[i] = '1') or (num[i]= '2') then
num[i]:= '0'
else if (num[i] = '8') or (num[i] = '9') then
begin
numero:= Redondear(numero, 1);
num:= FloatToStr(numero);
end;
Result:= StrToFloat(num);
end;
Le tendrias que hacer algunos retoques. No se que resultado queres cuando el numero es, por ejemplo 2,43 o 2,47.

Espero que te sirva..

Bytes...
Hola, acá estoy de nuevo.
Uy, la cantidad de mensajes que me perdí.
Antes que nada, debo agradecer la función que me
pasó Sotrono.
La verdad me vino de maravillas.
Le hice algunas modificaciones.
La función Redondear la saqué y usé RoundTo, ya que hace lo mismo.
Y después le arreglé un pequeño error, que se producía cuando
el número a redondear no tenía decimales.
Lo solucioné preguntando si Pos(',', num) era distinto de cero.
Aparentemente ahora funciona 10 puntos.

Ahí va el código:

Código:
function TForm1.RedondearPesos(var Numero: Real): Real;
var
  num: string;
  i: integer;
begin
  numero:= RoundTo(numero, -2);
  num:= FloatToStr(numero);
  if (Pos(',', num)) <> 0 then
	for i:= Length(num) downto (Pos(',', num) + 2) do
	  if (num[i] = '3') or (num[i] = '4') or (num[i] = '6') then
		num[i]:= '5'
	  else if (num[i] = '1') or (num[i]= '2') then
		num[i]:= '0'
	  else if (num[i]='7') or (num[i] = '8') or (num[i] = '9') then
		begin
		  numero:= RoundTo(numero, -1);
		  num:= FloatToStr(numero);
		end;
  Result:= StrToFloat(num);
end;
Bueno, debo agradecer la ayuda de todos y bueno,
ahora voy a probar todas las otras posibilidades.
Igualmente, el problema ya está solucionado.
Pero nunca viene de más aprender un poco.
Agradezco de nuevo la ayuda de todos.
Un saludo.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:14:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi