[C con Clase] decimales en float

Steven R. Davidson vze266ft en verizon.net
Dom Dic 10 19:54:23 CET 2006


Hola Rafael,

Rafael Roman Otero wrote:

> pero no funcionaba, y al depurar (no se si este bien dicho) y darle en 
> 'vigilar variable' (uso el dev c++)  note que al introducir con el scanf 
> 3.1416 lo que se guardaba en la variable era 3.14159989 por lo que no 
> funcionaba pues 31415%31416 no es 0. Aunque funcionaria bien si tomara 
> solo 3 digitos despues del punto.
> 

Ya te han contestado, pero quiero agregar un método alternativo al que 
se ha presentado. Realmente tal método se basa en el tuyo: manejar 
números enteros.

Lo que podemos hacer es aceptar la información como cadenas de 
caracteres. Luego, podemos convertir tales cadenas en número enteros. 
Por ejemplo,

char szNumero[32];
scanf( "%s", &szNumero );

Tendríamos que buscar la coma decimal para convertir la información a un 
número entero. Por ejemplo,

szNumero <- "3.1416"

Manipularíamos la cadena para que resultara en:
szNumero <- "31416"

Ahora convertimos la cadena en un número entero:d
int nNumero = atoi( szNumero );

Finalmente, podemos aplicar tu idea de manejar números enteros.

Esto funciona si los valores son introducidos por el teclado. Si son 
generados o calculados, entonces tendríamos problemas de redondeo y de 
imprecisión.

Sinceramente prefiero la idea de Salvador de implementar un nivel de 
tolerancia para manejar valores de suficiente precisión.


Espero que esto te ayude.

Steven








Más información sobre la lista de distribución Cconclase