Buenas!
Estoy iniciándome en la programación en C, y cuando dicen que pro ejemplo el tipo de variable float tiene el rango de posibles valores del 3,4E-38 al 3.4E38.¿Qué quiere decir?
Gracias!
| |||
Respuesta: ¿Qué significa rango? Quiere decir que una variable del tipo float no puede almacenar un numero mas chico que 3,4E-38 y mas grande que 3.4E38. supongamos que el tipo x tiene rango -255 a 255. Si quisieramos asigar el numero 256 nos daria un error de overflow y se truncaria el numero a 255. |
| |||
Respuesta: ¿Qué significa rango? Casualmente era un caso hipotetico, para dar un ejemplo sobre la situacion. Porque a lo mejor los numero escritos en notacion cientifica lo estan cofundiendo. |
| ||||
Respuesta: ¿Qué significa rango? Hola, Cita: Pero es algo muy confuso aún así, puesto que al almacenar 256 en un rango de 255, según lo que escribes es que va a almacenar el número máximo es decir el 255, pero como bien sabes el procesador del ordenador no funciona de esa forma.Y sí está bien aclarar las dudas, pero no induciendo un mal concepto adicional, posiblemente interpretará que si guarda el número 65,536 en un 'unsigned short' va a obtener 65,535 que es su valor máximo, cuando en realidad va a obtener un 0 por el overflow. Cita: Adicionalmente a lo que explicaba sam90, tienes que tener en cuenta que se van a almacenar números de 3.4e-38 hasta 3.4e+38. Pero solamente con una precisión de 6 o 7 digitos, es decir, los primeros 6 o 7 dígitos son importantes, lo demás no va a ser exacto.Por ejemplo, el número 100000.0 lo va a almacenar correctamente, mientras que 100000000.01 va a perder precisión y posiblemente se va a almacenar como 1.0e+8, si tienes problemas con la interpretación de números en notación científica entonces busca información sobre eso específicamente. Saludos, Última edición por HackmanC; 15/05/2011 a las 13:06 Razón: edit |
| |||
Respuesta: ¿Qué significa rango? Muchas gracias! Me habéis ayudado un montón, entonces y en definitiva, lo que quiere decir esque si yo a la variable en decimal float x=256.6 no valdría con float, sin embargo si en un programa le asigno la variable float con el número 254.4 sí me lo va a mostrar y almacenar correctamente en memoria ¿No? Por último, lo que no he entendido es eso que llegue hasta 3.4e38, Pues no estabamos hablando de que puede llegar a 255? Porque 3.4^38 = 1.57108198 × 1020 No me cuadra, creo que no entiendo eso bien... :S Gracias Hackman y Sam =) |
| ||||
Respuesta: ¿Qué significa rango? Hola, Cita: Nop, creo que posiblemente te estamos confundiendo más por que hay conceptos fundamentales que si no los comprendes bien desde el inicio después te va a ser mucho mas difícil comprenderlos, así sam90 puso del ejemplo de 256 pero yo lo compliqué bastante más, puesto que si y solo si llegara a suceder que intentas guardar un número fuera del rango suceden cosas inesperadas bastante difíciles de comprender.
Iniciado por jesusgox ... Me habéis ayudado un montón, entonces y en definitiva, lo que quiere decir esque si yo a la variable en decimal float x=256.6 no valdría con float, sin embargo si en un programa le asigno la variable float con el número 254.4 sí me lo va a mostrar y almacenar correctamente en memoria ¿No? Por último, lo que no he entendido es eso que llegue hasta 3.4e38, Pues no estabamos hablando de que puede llegar a 255? Porque 3.4^38 = 1.57108198 × 1020 ... Primero que todo las variables float tienen un rango positivo de 3.4e38 que no es lo mismo que 3.4^38. La notación científica significa que tienes que multiplicar el número por 10^n donde n es el exponente. http://es.wikipedia.org/wiki/Notaci%...ient%C3%ADfica Osea que el rango de las variables float es: -3400000000000000000000...(hasta juntar 38 ceros) hasta +340000000000000000000....(hasta juntar 38 ceros) Pero se guardan de una manera muy especial, así que solamente se expresan los primeros 6 o 7 digitos y seguidamente de cuantos ceros lleva antes o después. Por ejemplo, si pones 8900000000001 en un float solamente va a guardar 8.9e12 puesto que lleva 89 y varios ceros más (creo que once o algo así), el último 1 se pierde porque no se pueden guardar más de 6 o 7 dígitos importantes, eso es para ahorrar espacio dentro de la computadora y por eso se dice que los float y doubles pierden precisión. Saludos, ps: El verdadero rango de los float depende del compilador que estés usando. En los cálculos de la cantidad de ceros me pude haber equivocado en algunos lugares. Última edición por HackmanC; 15/05/2011 a las 18:39 Razón: edit |
Etiquetas: |