mathjs maneja la pérdida de precisión

página web oficial

Ejemplo: math.js | una extensa biblioteca matemática para JavaScript y Node.js

github: GitHub - josdejong/mathjs: una extensa biblioteca matemática para JavaScript y Node.js

dirección npm: mathjs-npm

características matemáticas:

  • Se admiten números, números grandes, números complejos, fracciones, unidades, cadenas, arreglos y matrices.
  • Compatible con la biblioteca matemática integrada de JavaScript.
  • Contiene un analizador de expresiones flexible.
  • Realizar cálculos simbólicos.
  • Viene con una gran cantidad de funciones y constantes integradas.
  • También se puede utilizar como una aplicación de línea de comandos.
  • Se ejecuta en cualquier motor de JavaScript.
  • Fácil de ampliar.
  • fuente abierta.

Math.js está disponible en node.js y el navegador.

Instale math.js usando npm :

npm install mathjs

O descargue mathjs a través de uno de los CDN enumerados en la página de descarga:

   <secuencia de comandos src="https://cdn.bootcdn.net/ajax/libs/mathjs/10.6.1/math.min.js"></secuencia de comandos>

Cómo usar mathjs

El método de mathjs para obtener el valor de la operación.

  1. valor de()
  2. hecho()
  3. formato()
  4. ...

Use funciones estáticas y constantes (como el objeto matemático de JavaScript)

math.round(math.e, 3);            // 2.718
math.add(2, 3);  // 5 
math.sqrt(-4);  // 2i 
math.pow([[-1, 2], [3, 1]],2);     // [[7, 0], [0, 7]]
math.derivative('x^2 + x', 'x');  // 2 * x + 1
math.atan2(3, -3) / math.pi;      // 0.75

numeros grandes de mathjs

Si no se usa bignumber, el resultado del cálculo tendrá problemas de precisión

math.bignumber('2.3e+500') // BigNumber, 2.3e+500
print(math.add(0.1, 0.2)) // number, 0.30000000000000004
print(math.multiply(10.22, 100)). //1022.0000000000001
print(math.divide(0.3, 0.2)) // number, 1.4999999999999998

La primera:

Puede usar la siguiente función para crear BigNumber para resolver el problema de precisión del cálculo js

print(math.add(math.bignumber(0.1), math.bignumber(0.2))) // BigNumber, 0.3
print(math.divide(math.bignumber(0.3), math.bignumber(0.2))) // BigNumber, 1.5

El segundo tipo:

La mayoría de las funciones pueden determinar el tipo de salida según el tipo de entrada: un número como entrada devolverá un número como salida, un BigNumber como entrada devolverá un BigNumber como salida. Las funciones que no pueden determinar los tipos de entrada y salida (por ejemplo math.evaluate, ) usan tipos numéricos predeterminados number, que se pueden configurar al instanciar math.js. Para configurar el uso de BigNumbers en lugar de números de forma predeterminada, configure math.js de esta manera:

const { create, all } = require('..')

// configure the default type of numbers as BigNumbers
const config = {
  number: 'BigNumber',
  precision: 64, 
}
const math = create(all, config)



math.evaluate('0.1 + 0.2')  // BigNumber, 0.3

 BigNumber tiene una precisión predeterminada de 64 bits, que se puede configurar mediante la opción

Sumas, restas, multiplicaciones y divisiones

Ejemplo usando bignumber:

​math.add(math.bignumber(0.1), math.bignumber(0.2)) // 加法 BigNumber, 0.3
math.subtract(math.bignumber(1), math.bignumber(0.9)) // 减法 BigNumber, 0.1
math.multiply(math.bignumber(4.10), math.bignumber(100)) // 乘法 BigNumber, 410
math.multiply(math.bignumber(10.22), math.bignumber(100)) //乘法 10.22
math.ceil(math.bignumber(6.10)/ math.bignumber(0.1));   //除法 向上取整 61
math.floor(math.bignumber(6.10)/ math.bignumber(0.1));   //除法 向下取整 61
math.round(math.bignumber(6.10)/ math.bignumber(0.1));   // 除法 四舍五入 61

Supongo que te gusta

Origin blog.csdn.net/u011200562/article/details/130886469
Recomendado
Clasificación