Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

167
Visualizações
¿Qué significa 17 lugares decimales de precisión en el número js mdn doc?

 const a = 10; const b = 0.123456789123456789; console.log((a + b).toFixed(17)); // 10.12345678912345726

Como puede ver en el ejemplo anterior, .12345678912345 , solo esta parte se muestra correctamente, según entiendo, Javascript solo considera 15 lugares de precisión (incluido . ). Si cambiaré 10 a 100, será la misma cantidad, pero estaba pensando que debería tener una precisión de 17 lugares según el documento de MDN. ¿Qué no significa exactamente esta frase 17 decimal places of precision ?

Si lo muestro sin el método .toFixed() , mostrará la misma precisión 15 10.123456789123457 - respuesta de a + b

URL: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

De acuerdo con la especificación JS/ECMAScript , el Number type utiliza un punto flotante de precisión doble que tiene un formato 64-bit ( binary64 ), consta de un bit de signo (determina el valor positivo o negativo), 11 bits de exponente y 52 bits de fracción (cada dígito representa 4 bits, por lo tanto, 64 bits tiene 16 dígitos):

El tipo de número que representa los valores IEEE 754-2008 de formato de 64 bits de doble precisión, tal como se especifica en el estándar IEEE para la aritmética binaria de punto flotante.

El número positivo máximo que se puede representar correctamente usando doble precisión es 9007199254740992 , que se puede lograr usando Math.pow(2, 53) . Si el rango de números está entre Math.pow(2, 53) y Math.pow(2, 54) (o entre Math.pow(2, -53) y Math.pow(2, -54) ), solo números pares se puede representar correctamente porque los bits de exponente afectarán al LSB (bit menos significativo) en los bits de fracción.

Repasemos la parte de los números grandes:

 var x = 12345678912345.6789 var x = new Number(12345678912345.6789)

Este número contiene más de 52 bits fraccionarios ( 72 bits en total), de ahí el redondeo utilizado para mantener los bits fraccionarios a 52 .

También con este número decimal:

 var x = new Number(.12345678912367890)

Este número contiene 68 bits fraccionarios, por lo tanto, el último cero se corta para mantener una longitud de 64 bits.

Por lo general, las representaciones numéricas mayores que 9007199254740992 o menores que 1.1102230246251565E-16 se almacenan como cadenas literales en lugar de Number . Si necesita calcular números muy grandes, hay ciertas bibliotecas externas disponibles para realizar aritmética de precisión arbitraria.

Si desea emitir más de 16 puntos después del punto decimal, puede:

  • Use una cadena literal para representar su número
  • Use bibliotecas externas como math.js , BigInteger.js o la biblioteca strint .
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda