traduccion the skullgirls programacion maloo kurt her heart captain band double

the - ¿Por qué double.MaxValue es más grande que long.MaxValue?



double traduccion (4)

ambos tienen 8 bytes, pero ¿por qué el valor máximo para el doble es mucho mayor que el valor máximo de long? hay un número finito de bits disponibles, entonces, ¿cómo podría alcanzar números mayores con variables de punto flotante?


Un doble tiene algo llamado exponente, que es básicamente un factor de escala. Esto permite que el rango de doble sea mucho mayor, pero a un costo de precisión.

A long es un valor entero simple sin factor de escala.


Utiliza una representación diferente (punto flotante) usando exponentes y mantisa.

Para más detalles ver IEEE754


Los números de punto flotante consisten en una mantisa y un exponente, y el valor de un número de punto flotante es:

mantisa * 2 exponente

El exponente en un doble es de 11 bits, por lo que el valor máximo es de la magnitud 2 2 11 - 1 = 2 1024 , que es mucho más que la magnitud de un doble con signo de 64 bits, que es 2 63 -1.


Porque la representación en coma flotante es de menor precisión. Mientras que el tipo long puede representar todos los números enteros en el rango desde el mínimo hasta el máximo, el tipo double solo puede representar algunos de ellos.

Como ocupan la misma cantidad de bits, la cantidad de números que cada uno puede expresar es casi igual (en realidad, el double puede representar menos números). Sólo los pasos entre estos números son diferentes.