simple online doble convertidor calculadora c math floating-point precision ieee-754

c - online - Representando enteros en dobles



ieee 754 online calculator (5)

¿Un doble (de un número dado de bytes, con un equilibrio razonable de mantisa / exponente) puede mantener siempre con toda precisión el rango de un entero sin signo de la mitad de ese número de bytes?

Por ejemplo, ¿un doble de ocho bytes puede contener con precisión el rango de números de un int sin signo de cuatro bytes?

A lo que se reducirá esto es si un flotador de dos bytes puede mantener el rango de un byte sin signo int.

Un int byte sin signo de un byte será, por supuesto, 0 -> 255.


Exactamente cuál es el rango que puede representar exactamente depende de una gran cantidad de factores en su implementación, pero puede limitarlo diciendo que, si el campo del exponente se establece en 0, puede representar exactamente los números enteros hasta el ancho de Su campo de mantisa (asumiendo un bit de signo). Para IEEE 754 de doble precisión, esto significa que puede representar números de 52 bits exactamente. En general, su mantisa será más de la mitad del ancho de la estructura general.



Sí. Se garantiza que un flotador (o doble) representa exactamente cualquier número entero que no necesita ser truncado. Para un doble, hay 53 bits de precisión, por lo que es más que suficiente para representar exactamente cualquier número entero de 32 bits, y también una pequeña proporción (estadísticamente hablando) de 64 bits.


Un doble IEEE754 de 64 bits puede representar cualquier entero de 32 bits, simplemente porque tiene 53 bits impares disponibles para la precisión y el entero de 32 bits solo necesita, bueno, 32 :-)

Sería plausible que un número de punto flotante de 64 bits (sin IEEE754 doble precisión) tenga menos de 32 bits de precisión. Eso permitiría números realmente grandes (debido al exponente) pero a costa de la precisión.

La conclusión es que, siempre que haya más bits de precisión en la mantisa del número de punto flotante que los que hay en el entero (y suficientes bits en el exponente para escalarlo), entonces se puede representar sin pérdida de precisión.


No usaría las palabras "con toda precisión" cuando se habla de números de punto flotante. Pero sí, un double puede representar un entero de 32 bits.

No sé para qué otras combinaciones de flotadores e intenciones esto también es cierto.

Hablando en términos prácticos, no querrá molestarse en usar un punto flotante por encima de lo que su máquina soporta, así que simplemente cambie a aritmética racional con bignums. De esa manera, tienes garantizada la precisión.