Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-09-2008
vivamotos vivamotos is offline
Miembro
 
Registrado: ago 2006
Posts: 150
Poder: 18
vivamotos Va por buen camino
FLOAT de los ... no va!

Saludos,

Puede que sea una tonteria pero mirad quiero almacenar el valor real de una división

La división es 3860 / 3600

lo pongo en un float de esta forma

float aux;
aux=3860/3600;

PERO AUX tiene el valor 1! cuando tendria que tener 1,0722222222222222

Que es lo que pasa?
Responder Con Cita
  #2  
Antiguo 25-09-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por vivamotos Ver Mensaje
PERO AUX tiene el valor 1! cuando tendria que tener 1,0722222222222222
¿Tiene ese valor o te está enseñando ese valor?
¿Como visualizas el resultado?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 25-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola vivamotos, has esta pruebita y veraz que si funciona.

Código Delphi [-]
var
 aux : Double;
begin
 aux := 3860/3600;
 showmessage(FloatToStr(aux));
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 25-09-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
...Bueno, eso es un error frecuente que se puede cometer en C.

3860/3600; es una división de enteros, y por lo tanto el resultado en un entero
float aux = 3860/3600; convierte el valor entero de la división a float, por lo tanto no tiene decimales...

Y, entonces?...

Pues debemos convertir antes a float uno o los dos operandos, desde ese momento el compilador asume que el resultado debe ser float:

Código:
float aux = (float)3860/3600;
//o 
float aux = 3860.0/3600;
//o
float aux = (float)3860/(float)3600;
Saludos.
Responder Con Cita
  #5  
Antiguo 03-01-2009
Avatar de mg1821
mg1821 mg1821 is offline
Miembro
 
Registrado: may 2003
Ubicación: lima
Posts: 69
Poder: 21
mg1821 Va por buen camino
Otra nueva

Alguien me podria ayudar ya que deseo que la salida sea por ejemplo:

1,2345 y no 1.2345

es decir que el decimal salga en coma y no en punto, por ejem usando la salida cout y/o printf.

gracias de antemano
__________________
mg1821
Responder Con Cita
  #6  
Antiguo 03-01-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No estoy seguro, pero, creo que puedes utilizar la variable global "DecimalSeparator", de modo que puedes cambiarla por una "coma", en lugar de un "punto", que es como viene de forma predeterminada. Prueba a ver qué tal.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 03-01-2009
Avatar de mg1821
mg1821 mg1821 is offline
Miembro
 
Registrado: may 2003
Ubicación: lima
Posts: 69
Poder: 21
mg1821 Va por buen camino
uhmm... aun me queda la duda.

por ahi encontre que usando LOCALE la hacia, pero habra una forma mas sencilla?
__________________
mg1821
Responder Con Cita
  #8  
Antiguo 05-01-2009
Luvac Luvac is offline
Miembro
 
Registrado: nov 2007
Posts: 24
Poder: 0
Luvac Va por buen camino
Pues tendrias que usar un poco la imaginacion por ejemplo:

int d;
float a;
AnsiString b,c;
a=StrToFloat(Edit1->Text)*StrToFloat(Edit2->Text);//primero transformas a float los datos de los edit y haces la operasion
b=FloatToStr(a);//segundo transformas la operacion en String
d=b.Pos(".");//Tercero buscas con pos la ubicasion del punto
c=b.SubString(1,d-1)+","+b.SubString(d+1,b.Length());//4 partes en dos el resultado para suprimir el punto y cambiarlo por el caracter que se te antoje
Label1->Caption=c;//y quinto lo muestras en un label

Esto es solo un ejemplo, espero te sirva.
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
TEdit Float Temurdounojo Varios 2 23-01-2008 11:54:52
Problemas con los float tato Varios 2 03-04-2006 11:57:38
format float() rastafa1 DelphiPACK 1 04-03-2005 07:18:29
de float a string davidgaldo Varios 1 18-05-2004 15:41:26
Float marianaf Varios 1 24-11-2003 19:44:47


La franja horaria es GMT +2. Ahora son las 13:13:30.


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