Todos los números en Javascript son números de coma flotante de 64bit (8 bytes) pero ¿por qué el rango efectivo de JavaScript es 5e-324 (negativo) a 1.7976931348623157e + 308 (positivo)?Números en Javascript y rango efectivo
Respuesta
Porque eso es lo que es defined by the IEEE 754 spec.
0x 0000 0000 0000 0001 = 2⁻¹⁰²²⁻⁵² ≈ 4.9406564584124654 x 10⁻³²⁴ (Min subnormal positive double)
0x 000f ffff ffff ffff = 2⁻¹⁰²² - 2⁻¹⁰²²⁻⁵² ≈ 2.2250738585072009 x 10⁻³⁰⁸ (Max subnormal positive double)
0x 0010 0000 0000 0000 = 2⁻¹⁰²² ≈ 2.2250738585072014 x 10⁻³⁰⁸ (Min normal positive double)
0x 7fef ffff ffff ffff = (1 + (1 - 2⁻⁵²)) x 2¹⁰²³ ≈ 1.7976931348623157 x 10³⁰⁸ (Max Double)
+ Observe especialmente que la mantisa de 52 bits en la referencia. –
Debido a valores denormales; ver p. http://en.wikipedia.org/wiki/Denormal_number. Estos amplían el rango de valores de punto flotante para permitir valores más cercanos a cero de lo que de otro modo sería posible.
Sería conveniente que los tratara como un detalle de implementación cuyo propósito es hacer que los cálculos con resultados intermedios muy pequeños no se comporten de manera demasiado patológica; cuando utilizas estos valores muy pequeños, se pierde cierta precisión.
- 1. Números aleatorios en un rango
- 2. Generar "en rango" números aleatorios en C
- 3. rieles y formas: desplegable con rango de números y ilimitado
- 4. Rango en Javascript/jQuery?
- 5. Generando un rango de números en MySQL
- 6. Buscar intersección de rango de números
- 7. Números con comas en Javascript
- 8. ¿Cuántos números de coma flotante distintos en un rango específico?
- 9. Números aleatorios y negativos
- 10. ¿Cómo formatear números en JavaScript?
- 11. Usando el caso para un rango de números en Bash
- 12. Encontrar la frecuencia del rango de números en Mathematica
- 13. Cómo asignar números en el rango <0;99> al rango <-1.0;1.0>?
- 14. Seleccionar números entre un rango (1 a 100) en sqlite
- 15. Verifique un rango de números en una condición if
- 16. Procesamiento JMS efectivo
- 17. Validación javascript números decimales
- 18. ¿Cómo obtengo un rango de Excel usando números de fila y columna en VSTO/C#?
- 19. Convertir un rango de números a otro rango, manteniendo la proporción
- 20. Crear tabla de temperatura con rango de números
- 21. Modificar el rango de un generador de números aleatorios uniforme
- 22. Encontrar el LCM de un rango de números
- 23. Comprobación de un rango de números con expresiones regulares
- 24. Mailto máximo efectivo: longitudes del cuerpo
- 25. Expresión regular para formatear números en JavaScript
- 26. ¿Cómo puedo agregar números no secuenciales a un rango?
- 27. Números flotantes de precisión arbitrarios en JavaScript
- 28. suma de dos números en JavaScript incorrectamente
- 29. ¿Cómo puede ser efectivo ASLR?
- 30. inicializar una matriz de int con un rango de números
De todos los valores posibles, 9007199254740990 de ellos se representan como NaN (No es un número). –
edwardpku, probablemente debería aceptar la respuesta de MДΓΓ БДLL o la mía (dependiendo de si encuentra un puntero a la especificación, o una explicación de por qué la especificación dice eso, más útil). –
gracias, Gareth. : D – edwardpku