Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   FLOAT de los ... no va! (https://www.clubdelphi.com/foros/showthread.php?t=60231)

vivamotos 25-09-2008 09:42:08

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?

Neftali [Germán.Estévez] 25-09-2008 09:58:36

Cita:

Empezado por vivamotos (Mensaje 316190)
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?

Caro 25-09-2008 14:27:31

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

escafandra 25-09-2008 15:17:01

...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.

mg1821 03-01-2009 18:57:00

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

1,2345 y no 1.2345 :confused:

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

gracias de antemano :)

dec 03-01-2009 19:02:38

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. ;)

mg1821 03-01-2009 19:52:54

uhmm... aun me queda la duda. :rolleyes:

por ahi encontre que usando LOCALE la hacia, pero habra una forma mas sencilla?

Luvac 05-01-2009 23:15:15

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.


La franja horaria es GMT +2. Ahora son las 05:19:14.

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