FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
AYUDA, Kylix 3.0 y números reales C++
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 |
#2
|
|||
|
|||
Prueba esto
Intenta hacer la misma operación, pero usando la coma ',' en lugar del punto '.' como separador decimal.
|
#3
|
|||
|
|||
En Kylix pascal ocurre lo mismo cuando les asignas manualmente un valor, no cuando pasas valores entre variable;
Código:
N:=2.2;//pasa a ser 0.00022 lo divide por 10000 N:=2+2/10; //da correctamente 2.2 |
#4
|
|||
|
|||
Hola, que tal
Una de las soluciones es que trate con variables tipo float para numeros con decimal pequeños. |
#5
|
||||
|
||||
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 |
|
|
|