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

129
Visualizações
¿Cuál es la mejor manera de realizar cálculos aritméticos de alta precisión en JavaScript?

Estoy haciendo un algoritmo que verifica si un número es primo para la universidad, pero encontré un problema de connotación y cálculo en el que necesito considerar números grandes.

Uno de ellos se resolvió con el apoyo de BigInt() , sin embargo en cálculos aritméticos a partir de cierto número de decimales termina perdiendo precisión y en consecuencia devolviendo falso verdadero.

Por ejemplo, multiplicar 2 números que terminan en 1,3,7,9 siempre da como resultado un número que termina en 1,3,7,9, pero a partir de 3**34 los cálculos empiezan a perder precisión.

¿Hay alguna forma eficiente de resolver este problema en JavaScript?

 console.log(` ${3**32}, ${BigInt(3**32)} ${3**33}, ${BigInt(3**33)} ${3**34}, ${BigInt(3**34)} ${3**35}, ${BigInt(3**35)} ${3**37}, ${BigInt(3**37)} ${3*1597*3237*5549}, ${BigInt(3*1597*3237*5549)} ${3*1597*3237*5549*13213}, ${BigInt(3*1597*3237*5549*13213)} ${3*1597*3237*5549*13213*4543}, ${BigInt(3*1597*3237*5549*13213*4543)} `);

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Podrías... no usar Javascript 😉

Fuera de eso, podría tomar la implementación ANSI C de Mike Cowlishaw del paquete decNumber o decFloats aritmético decimal de precisión arbitraria ( http://speleotrove.com/decimal/#decNumber ) y escribir enlaces Node.js para ello.

Mike Cowlishaw sabe un par de cosas sobre aritmética:

En 1998 y 1999 también fue editor de proyectos y presidente técnico del estándar internacional ECMAScript (JavaScript) (ahora ISO 16262).

Desde 1999 hasta 2009, trabajó en nuevos paquetes de aritmética decimal (incluida la clase BigDecimal de IBM para Java y la biblioteca decNumber C), inventó la codificación Densely Packed Decimal y ayudó a especificar una nueva arquitectura de hardware decimal. Es el autor de las especificaciones de aritmética decimal general y fue el líder de especificación de las mejoras de aritmética decimal incluidas en Java 5 en 2004.

Mike defendió la adición de nuevos tipos decimales y aritmética al estándar IEEE 754 para aritmética de punto flotante y a C, C++, COBOL y otros lenguajes (así como en hardware), y permanece activo en el trabajo relacionado de un número de organizaciones de estándares, incluidas ECMA, ISO, ANSI, IEEE, BSI y W3C. Ha sido editor del estándar IEEE 754 desde su primera votación en 2007 y hasta su publicación en 2008 y como ISO/IEC/IEEE 60559 en 2011, y fue miembro del Comité de programa del Simposio IEEE sobre aritmética informática. IEEE 754 se mejoró aún más, con Mike como editor, y el estándar revisado se publicó en 2019.

about 4 years ago · Juan Pablo Isaza Relatório

0

Se recomiendan números de tipo BigInt para este tipo de operación. Creía que BigInt() era solo un método de conversión, pero también es una unidad numérica.

los cálculos también deben hacerse usando el mismo formato de número, y si una división da como resultado una fracción, se redondea hacia abajo.

 console.log(` ${3n**32n} ${3n**33n} ${3n**34n} ${3n**35n} ${3n**37n} ${3n*1597n*3237n*5549n} ${3n*1597n*3237n*5549n*13213n} ${3n*1597n*3237n*5549n*13213n*4543n} ${1n/3n} ${2n/3n} `);

about 4 years ago · Juan Pablo Isaza 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