¿Cual es el limite de un numero con punto flotante (en programacion)?

Iniciado por danielo-, 16 Septiembre 2010, 01:27 AM

0 Miembros y 1 Visitante están viendo este tema.

danielo-

Pues si, esta pregunta me surgio cuando hacia una tarea de programación, es decir, los int tienen un limite (hablando que es un int de 32 bits) pues sus limites serían
2^31-1
-2^31

pero y si se trata de un float??? de 32 bits??? que norma siguen para establecer los limites? y es que estado buscando por la red y hay varias explicaciones, pero aun así no las entiendo, si alguno de ustedes sabe, me gustaria que me explicaran si?  ;-)
Saludos!

Franki

Depende de la plataforma y de la arquitectura.

Por ejemplo, en Java, al ser multiplataforma el tamaño de los datos primitivos es constante entre sistemas operativos y arquitecturas. Un int tiene 32 bits, un double 64.

Si lo que quieres saber es en C o C++ ahí cambia la cosa, ya que depende sobre todo del S.O y de la arquitectora, si es x86 o otra.

danielo-

Cita de: Franki en 16 Septiembre 2010, 01:38 AM
Depende de la plataforma y de la arquitectura.

Por ejemplo, en Java, al ser multiplataforma el tamaño de los datos primitivos es constante entre sistemas operativos y arquitecturas. Un int tiene 32 bits, un double 64.

Si lo que quieres saber es en C o C++ ahí cambia la cosa, ya que depende sobre todo del S.O y de la arquitectora, si es x86 o otra.
Si si, ya se que ocupa el mismo espacio, lo que trato de saber cual es el numero máximo que se puede representar

Lunfardo

http://es.wikipedia.org/wiki/Coma_flotante ¬¬

esto deberia ir a en programacion general , igualmente.


     Tipo      Tamaño                Rango                               
                 ------------------------------------------------------
                   float     4 bytes (32 bits)     3,4e-038..3,4e+038
                   double    8 bytes (64 bits)     1,7e-308..1,7e+308


"e+"= "diez a la "

Franki

#4
En JAVA:

- BYTE:
MAX: 2^7-1
MIN: -2^7

- SHORT:
MAX: 2^15-1
MIN: -2^15

- INT:
MAX: 2^31-1
MIN: -2^31

- LONG:
MAX: 2^63-1
MIN: -26^3

- FLOAT:
MAX: (2-2^-23)*2^127.
MIN: 2^-126

- DOUBLE:
MAX:(2-2^-52)*2^1023
MIN:2^-1022



EDITO: La lógica que sigue es la siguiente:

Si tienes un byte pues puedes representar números hasta de 8 bits. Es decir del 0 al 256. Pero si tienes que repsentar tambien numeros negativos, pues lo tendras que partir en dos. Asi que 2^8/2 = 2^7

Es decir de -2^7 que es -128 a 2^7 que es 128, pero el 0 esta por ahi y tambien se cuenta, así que restas uno a 128 y te queda: 2^7-1

Asi la misma lógiga para 8bits/16bits/32bits/64bits