PDA

Ver la Versión Completa : AYUDA, Kylix 3.0 y números reales C++


song706
15-04-2004, 13:17:47
Vaya, vaya quién lo iba a decir, después de tanto
tiempo programando he dado de bruces con un problema
que si bien no deja de ser estúpido, y probablemente
la solución sea evidente, me tiene atado de pies y
manos,

Pués bien les contaré:

Como supongo que sabrán, en C suelen usarse los tipos
float y double para manejar datos reales, con lo que
una expresión tal que así:

double numero;
numero = 3.5 + 2.2;

debería asignar a la variable numero el valor real
5.7,

pués bien, desarrollando una aplicación sobre Kylix
3.0 y en C, me he encontrado con que se salta a la
torera los decimales, y me guarda en la variable
numero el valor 5 (se come el 0.7)

He pensado que podría estar presentándolo mal por
pantalla, (nos ha pasado a todos) pero no es el caso,
entonces pensé que podría ser alguna opción en el
compilador, pero tampoco es el caso, tanbién probé con
refundición de tipos (casting) haciendo:

numero = (float)(3.5+2.2);

y cosas como:

(float) (numero) = (float) (3.5+2.2);

pero nada de nada, y por último pensé que no tengo ni
puta idea... que sí es el caso,
alguien puede mostrarme la luz,

estoy seguro que es una tontería pero ya se sabe:

cuanto más estúpido es el motivo más ciegos estamos
para verlo...

Un saludo, y gracias

cesargcman
27-04-2004, 06:40:48
Intenta hacer la misma operación, pero usando la coma ',' en lugar del punto '.' como separador decimal.

Julià T.
28-04-2004, 00:18:49
En Kylix pascal ocurre lo mismo cuando les asignas manualmente un valor, no cuando pasas valores entre variable;

N:=2.2;//pasa a ser 0.00022 lo divide por 10000
N:=2+2/10; //da correctamente 2.2

Fabian Caminos
08-09-2006, 00:28:43
Hola, que tal

Una de las soluciones es que trate con variables tipo float para numeros con decimal pequeños.

Caral
08-09-2006, 00:46:22
Hola
Por alguna razon que desconozco en C en mis viejos tiempos cuando se hacian cosas como estas si mas no me acuerdo habia que encerrar uno de los parametros de la variable, no se por que lee los dos parametros por separado lo pedor que podria pasar es que te diera 5.5

double numero;
numero = (3.5) + 2.2;

Variable Numero= 5.5

Es una idea mas
Saludos