Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-01-2012
Kubelo Kubelo is offline
Miembro
 
Registrado: feb 2010
Posts: 58
Poder: 15
Kubelo Va por buen camino
Problema con FloatToStr

Hola, en primer lugar agradecer la molestia de leer mi problema y ayudarme.

Vamos a ver, tengo una función tal que así:

Código Delphi [-]
procedure TNuevoEdit.SetFloat(ValorFloat: Double);
begin
 if Tipo = TipoFloat then Text := FloatToStr(ValorFloat);
end;

Bien el problema que me he encontrado es que al pasar un valor tipo (ValorFloat = 1e-05) me pasa a partir de 5 decimales, ya que sino el valor llega como 0,0001. Pues bien en los casos que coge exponenciales al final el text se me pasa como un valor negativo.

Por ejemplo:

(0,00001) -> 1e-05 -> Text = -15
(0,00002) -> 2e-05 -> Text = -25

Es muy curioso pero me esta resultando un quebradero de cabeza. Así que espero ideas para que al final me quede como tiene que quedar, es decir:

1e-05 -> Text = 0,00001
2e-05 -> Text = 0,00002

Gracias de nuevo
Responder Con Cita
  #2  
Antiguo 20-01-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Kubelo.

Fijate si te sirve de este modo:
Código Delphi [-]
procedure TNuevoEdit.SetFloat(Value: Double);
begin
  Text:= FormatFloat('0.##########', Value);
end;


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 20-01-2012
Kubelo Kubelo is offline
Miembro
 
Registrado: feb 2010
Posts: 58
Poder: 15
Kubelo Va por buen camino
Pero eso siempre me devolverá decimales, y no tiene q ser así, debe devolver el valor correcto con o sin decimales.

Además el número de decimales puede variar dependiendo de donde se use el Edit que estoy desarrollando.

Gracias
Responder Con Cita
  #4  
Antiguo 20-01-2012
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
¿Y si utilizas Trunc(), no te sirve lo mismo? Digo, si lo que deseas es eliminar los decimales, es tu mejor opción...
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #5  
Antiguo 20-01-2012
Kubelo Kubelo is offline
Miembro
 
Registrado: feb 2010
Posts: 58
Poder: 15
Kubelo Va por buen camino
No quiero eliminar los decimales, el problema es q cuando llega un 1e-05 en lugar de pintar 0,00005 que sería lo correcto, me pinta -15. Jejejee
Responder Con Cita
  #6  
Antiguo 20-01-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Kubelo Ver Mensaje
No quiero eliminar los decimales, el problema es q cuando llega un 1e-05 en lugar de pintar 0,00005 que sería lo correcto, me pinta -15. Jejejee
Tál como está tu código, lo correcto es que muestre 1E-5. Lo que no entiendo a que puede deberse que te muestre -15...

Realicé una prueba sencilla que te adjunto por si te sirve:
Código Delphi [-]
...
implementation  {$R *.dfm}

type
  TNuevoEdit = class(TEdit)
  private
    FFloat: Double;
    procedure SetFloat(Value: Double);
  public
    property Float: Double read FFloat write SetFloat;
  end;


procedure TNuevoEdit.SetFloat(Value: Double);
begin
  Text:= FloatToStr(Value);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TNuevoEdit.Create(Self) do
  begin
    Parent:= Self;
    Float := 0.00001;
  end;
end;
y el resultado es 1E-5, tál como se esperaría de la conversión efectuada:



Pero hay algo que todavía no me termina de quedar claro y es: ¿ Que formato de salida (exáctamente) deseas en la propiedad Text de TNuevoEdit ?

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



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
Cambio de formato floattostr tbolzan Varios 5 27-09-2012 09:23:35


La franja horaria es GMT +2. Ahora son las 04:02:02.


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