Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-03-2009
Iron Iron is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Iron Va por buen camino
Decimales.

Buenas noches,

Me llamo Iron y es mi primer mensaje, vengo de hacer algunas cositas en Visual Basic y hace unos dias me decidi a trabajar con Delphi 7 (por tanto, mi nivel es bajísimo).
Tengo varias preguntas, pero abriré un hilo para cada una de ellas. La que pongo aquí es en referencia al número de decimales que salen después de la coma. ¿Como convierto 12,3425234213 en 12,34?, se que en Visual uso el Format, pero aqui no lo consigo .
Gracias por adelantado y un saludo.
Responder Con Cita
  #2  
Antiguo 21-03-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Iron,
Bienvenido a clubdelphi.
Como eres nuevo te informo de la guia de estilo. Por favor tomate unos minutos para leerla.

Respecto a tu duda, si es a efectos de visualización puedes emplear la función Format(). Revisa la ayuda.

Si deseas guardar o conservar el valor redondeado en una variable tienes a disposición la función RoundTo(), que redondea a la cantidad de decimales que indiques. Y al igual que lo dicho en format, lee la ayuda al respecto.

Puedes encontrar ejemplos del uso de format() y tal vez de RounTo() entre los hilos que se han venido tratando, realiza una búsqueda.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 22-03-2009
Iron Iron is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Iron Va por buen camino
Hola Delphius,
Gracias por contestar, lo intenté con format como en Visual pero me da error. Buscaré en el foro como usar la función RoundTo() que es la que mas me interesa.

Un saludo
Responder Con Cita
  #4  
Antiguo 23-03-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Iron Ver Mensaje
Hola Delphius,
Gracias por contestar, lo intenté con format como en Visual pero me da error.
Delphi no es Visual Basic. Por algo he dicho: leer la ayuda:
Cita:
Returns a formatted string assembled from a format string and an array of arguments.

Unit

SysUtils

Category

string formatting routines

function Format(const Format: string; const Args: array of const): string;

Description

This function formats the series of arguments in the open array Args. Formatting is controlled by the format string Format; the results are returned in the function result as a string.

For information on the format strings, see Format Strings.
Lee sobre Format Strings.

Un ejemplo de uso:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(format('%.2f',[132.457843]))
end;

Y si te da error es conveniente que nos comentes textualmente que error para saber como ayudarte. Me gustaría ver una muestra de cómo lo intentaste usar...

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 23-03-2009
Iron Iron is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Iron Va por buen camino
Delphius, era justo lo que quería!!. He tardado mas de media hora en hacerlo funcionar . Copie mal lo que pusiste (no ponia el paréntesis que está después del Showmessage) y en la ayuda Delphi, el ejemplo empieza con Format y tampoco le ponen paréntesis.
Al repasar el foro para poner que no me salia vi la diferencia con el tuyo.

Gracias!!
Responder Con Cita
  #6  
Antiguo 23-03-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Lightbulb

Yo utilizo la funcion RoundTo de la unidad Math para redondear los decimales por ejemplo:
RoundTo(3,56789,-2) me sale como resultado 3,57 ;el segundo parametro
indica la cantidad de decimales que se quiere que se muestre en este caso pongo 2
negativo por asi es como trabaja la function, desde luego trabaja tambien con el segundo parametro positivo, puedes buscar en la ayuda de delphi al respecto para una mejor comprension.
Saludos......
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 23-03-2009 a las 21:58:45.
Responder Con Cita
  #7  
Antiguo 24-03-2009
Iron Iron is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Iron Va por buen camino
También me vale, me interesa que me digais todas estas cosas porque así voy aprendiendo, Gracias!!!
Responder Con Cita
  #8  
Antiguo 28-03-2009
Iron Iron is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Iron Va por buen camino
He estado haciendo pruebas con RoundTo y hago algo mal:
El número es 123,456789
-si le pongo g:=RoundTo(f,-3):sale=123,45700073
-si le pongo -2):sale=123,45999964
-si le pongo -1):sale=123,5
-si le pongo 0):sale=123

También me pasa con una función mia:

Código Delphi [-]
procedure TInt_CC.ListBox9Click(Sender: TObject);
   var
    convertir:smallint;
   begin
    convertir:=Listbox9.ItemIndex + 1;
    Tipo_Inst_P_S:=Tipo_Inst(convertir);
end;
 
function Tipo_Inst(convertir:integer):single;
   begin
    if convertir=1 then Tipo_Inst:=1.732;
    if convertir=2 then Tipo_Inst:=2;
    if convertir=3 then Tipo_Inst:=1.732;
    if convertir=4 then Tipo_Inst:=1.732;
end;

Con esta función me devuelve 1,7319999933 en lugar de 1,732.

Gracias

Última edición por Iron fecha: 28-03-2009 a las 14:03:43. Razón: vista de código
Responder Con Cita
  #9  
Antiguo 28-03-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Lightbulb

Cita:
He estado haciendo pruebas con RoundTo y hago algo mal:
El número es 123,456789
-si le pongo g:=RoundTo(f,-3):sale=123,45700073
-si le pongo -2):sale=123,45999964
-si le pongo -1):sale=123,5
-si le pongo 0):sale=123
Pues yo lo he probado tambien y me sale todo bien por ejemplo:
RoundTo(123,456789,-3)=123,457 ok
RoundTo(123,456789,-2)=123,46 ok
RoundTo(123,456789,-1)=123,5 ok
RoundTo(123,456789,0)=123 ok
Probado en Delphi 7.
Me late que quisas estas haciendo algo mal.
Por que no pones tu codigo para que lo podamos ver.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #10  
Antiguo 29-03-2009
Iron Iron is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Iron Va por buen camino
Mi código es este (también en Delphi 7):

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
f:single;
g:single;
begin
f:=123.456789;
g:=RoundTo(f,-2);
showmessage (floattostr(g));
end;

Estoy convencido que es fallo mio, pero no se donde.
Un saludo y gracias.
Responder Con Cita
  #11  
Antiguo 29-03-2009
jandok238 jandok238 is offline
No confirmado
 
Registrado: ago 2007
Ubicación: ¿ǝɯ dlǝɥ noʎ uɐɔ 'ʍouʞ ʇ,uop ı
Posts: 415
Poder: 0
jandok238 Va por buen camino
Cita:
Empezado por Iron Ver Mensaje
Mi código es este (también en Delphi 7)
[delphi] procedure TForm1.Button1Click(Sender: TObject);
var
f:single;
g:single;
begin
f:=123.456789;
g:=RoundTo(f,-2);
showmessage (floattostr(g));
end;


Estoy convencido que es fallo mio, pero no se donde.
Un saludo y gracias.
El detalle esta en el tipo de las variables...
declara las variables de tipo doble ...

Código Delphi [-]
  var        f,g : double;

salu2!!!!!!!
Responder Con Cita
  #12  
Antiguo 29-03-2009
Iron Iron is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Iron Va por buen camino
Correcto, eso era el fallo!!!, yo cuando me puse a definir las variables vi primero el rango de las mismas:
Single 1.5 x 10^-45 .. 3.4 x 10^38 7-8 4
Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8

Pensaba que con single me valía!!!

Gracias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Decimales eduardo360 Varios 1 19-02-2008 03:29:28
Decimales oregon Varios 1 26-10-2006 16:53:08
Decimales Luis Alberto Varios 1 19-05-2006 17:40:25
decimales jfontane Varios 2 24-06-2003 06:35:19
Decimales alexisns Conexión con bases de datos 2 22-06-2003 22:45:40


La franja horaria es GMT +2. Ahora son las 07:18:57.


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