Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

124
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda