PDA

Ver la Versión Completa : Elevando una cifra


felipe88
11-12-2008, 02:57:21
Hola a todos, tengo una simple duda...

Digamos que tengo este número 35.459, ¿existe alguna fórmula en Delphi para que se convierta en 40.000?; o por ejemplo 27.684 a 30.000 :confused:

De antemano gracias :)

egostar
11-12-2008, 03:11:35
Hola


procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(inttostr(round(35.459*0.1)*10));
ShowMessage(inttostr(round(27.684*0.1)*10));
end;


Salud OS

felipe88
11-12-2008, 03:27:03
Gracias amigo... pero hay un pequeño problema, en este caso no podría multiplicar por 10 ya que el resultado sería 40 ó 30 para el segundo caso, habría que multiplicarlo por 1.000, pero digamos que tuviera 4.556 para convertirlo a 5.000 sería por 100...
Se que es un algoritmo fácil, pero estoy un tanto frio de mente hoy :o... y evito tener que evaluar si cada número es mayor de 10, 100, 1.000... etc :D

egostar
11-12-2008, 03:28:07
Gracias amigo... pero hay un pequeño problema, en este caso no podría multiplicar por 10 ya que el resultado sería 40 ó 30 para el segundo caso, habría que multiplicarlo por 1.000, pero en el caso de que tuviera 4.556 para convertirlo a 5.000 sería por 100...
Se que es un algoritmo fácil, pero estoy un tanto frio de mente hoy :o... y evito tener que evaluar si cada número es mayor de 10, 100, 1.000... etc :D

A ver amigo, el punto es decimal o de millares :eek:

Salud OS

felipe88
11-12-2008, 03:37:58
A ver amigo, el punto es decimal o de millares :eek:

Salud OS
:D:D... no te asustes, pero si es de miles :p

egostar
11-12-2008, 03:41:01
:D:D... no te asustes, pero si es de miles :p

Ahh, pues entonces así

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(inttostr(round(35459*0.0001)*10000));
ShowMessage(inttostr(round(27684*0.0001)*10000));
end;

:D

Salud OS

egostar
11-12-2008, 03:47:28
Ahora

Si son numeros de 2,3,4,5 etc cifras pues algo asi


procedure TForm1.Button1Click(Sender: TObject);
var
numero: integer;
begin
Numero := 35459;
case length(inttostr(numero)) of
2: ShowMessage(inttostr(round(Numero*0.1)*10));
3: ShowMessage(inttostr(round(Numero*0.01)*100));
4: ShowMessage(inttostr(round(Numero*0.001)*1000));
5: ShowMessage(inttostr(round(Numero*0.0001)*10000));
end;
end;


:rolleyes: ;) :cool: :D

Salud OS

felipe88
11-12-2008, 03:52:58
:D... bueno, este último es válido aunque se extiende demasiado :rolleyes:... pero gracias amigo, me sirve para este momento ;)

Saludos :D

felipe88
11-12-2008, 04:14:49
¿Alguna otra idea?, quiero complicar un tanto la cosa :p...
Veámos, para el codigo que me da Eliseo, se mide la distancia de la cifra para determinar segun el case, si está entre 10, 100, 1000...etc

¿Ahora, matemáticamente como podría jugar con esto?. :confused:

Saludos :D

Delphius
11-12-2008, 04:24:51
Y digo yo... ¿porqué no lo generalizamos?

Algo así:

function TForm1.Digits(Number: integer): integer;
begin
result := Length(IntToStr(Number));
end;

function Tform1.RoundUpNumber(Number: integer): integer;
var dig: integer;
begin
dig := Digits(Number) - 1;
result := trunc((round(Number * Power(0.1,Dig)) * Power(10,dig)));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(RoundUpNumber(35459)));
end;

;)

Saludos,

felipe88
11-12-2008, 04:42:55
Me gusta la idea Delphius :)... aunque aún estoy pensando en una fórmula :rolleyes:

Saludos :D

Delphius
11-12-2008, 04:50:28
Me gusta la idea Delphius :)... aunque aún estoy pensando en una fórmula :rolleyes:

Saludos :D
Jajaja... no me digas... a ver... déjame adivinar: Esto lo haces a modo venganza por lo del otro hilo.:D

Pues esta vez me agarraste cansado, intento hacer ping a mi cerebro pero recibo puro timeouts. En estos momentos está off.

Si encuentras la fórmula avísame:D

Saludos,

felipe88
11-12-2008, 15:35:25
Jajaja... no me digas... a ver... déjame adivinar: Esto lo haces a modo venganza por lo del otro hilo.:D

Pues esta vez me agarraste cansado, intento hacer ping a mi cerebro pero recibo puro timeouts. En estos momentos está off.

Si encuentras la fórmula avísame:D

Saludos,
:D:D... relax Delphius... estoy pensando :rolleyes:...

Saludos :D