Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

122
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!