Como todos sabrán, en JS
el límite de enteros es de [ -((2**53)-1) , (2**53)-1]
, es decir, Number.MIN_SAFE_INTEGER
a Number.MAX_SAFE_INTEGER
, y lo único que quiero es saber el porqué de esto. ¿Se debe a alguna restricción de los navegadores? ¿Se debe a que simplemente se pensó que los números que no entrasen en ese rango no eran lo suficientemente comunes como para programar su uso?
Asked
Active
Viewed 37 times
1
PySanti
- 690
- 1
- 14
-
la respuesta es sencilla, el *porqué* son los bytes, viene de antes de los navegadores, viene de muy lejos el por qué, no estoy seguro pero creo que viene desde los primeros ordenadores y su limitación. Por eso existen diferentes tipos de integers, acorde a los bytes que se van a usar, en lenguajes altos no tenemos mucho en cuenta el uso de cpu/memoria, pero para lenguajes de bajo nivel el tipo es muy importante – Nicolas Oñate Aug 25 '21 at 11:50
-
1Te recomiendo leer [esta respuesta](https://es.stackoverflow.com/a/561/16597) – Marcos Aug 25 '21 at 11:55
-
Es por el *Tamaño de [Palabra](https://es.m.wikipedia.org/wiki/Palabra_%28informática%29)*. – Sal Aug 25 '21 at 12:18
1 Answers
3
No tengo claro si la pregunta es adecuada para el sitio pero según la documentación de Mozilla
La constante MAX_SAFE_INTEGER tiene un valor de 9007199254740991 (9,007,199,254,740,991 o ~9 mil billones). El razonamiento detrás de ese número es que JavaScript usa números flotantes de doble precisión tal como está especificado en IEEE 754 por lo que puedes representar números de forma segura entre -(2^53 - 1) y 2^53 - 1.
Puedes echarle un ojo al resumen que hace Wikipedia de la IEEE 754. Y aquí te explican exactamente el formato en coma flotante de doble precisión con más detalle.
RubioRic
- 995
- 1
- 7
- 14