[Biblioteca tripartita de código abierto] bignumber.js: una biblioteca matemática de números grandes

La biblioteca tripartita OpenHarmony (OpenAtom OpenHarmony "OpenHarmony" para abreviar) es un componente de software que se ha verificado que es reutilizable en el sistema OpenHarmony y puede ayudar a los desarrolladores a desarrollar rápidamente aplicaciones OpenHarmony. Si se lanza a la comunidad de código abierto, se denomina biblioteca tripartita de código abierto y los desarrolladores pueden obtenerla visitando la comunidad de código abierto. A continuación, aprendamos sobre la biblioteca tripartita de código abierto bignumber.js.

bignumber.js es una biblioteca matemática, una biblioteca de JavaScript para aritmética decimal y no decimal de precisión arbitraria.

características

  • Decimal de suma entera.
  • API simple, pero con todas las funciones.
  • Más rápido, más pequeño y quizás más fácil de usar que la versión JavaScript BigDecimal de Java.
  • 8 KB minificados y comprimidos.
  • Copie los tipos de números y los métodos de JavaScript en Exponential, toFixed, toPrecision, toString.
  • Incluye un método para fraccionar raíz cuadrada que redondea correctamente.
  • Admite la generación de números pseudoaleatorios criptográficamente seguros.
  • Sin dependencias.
  • Amplia compatibilidad de plataforma: utiliza únicamente funciones de JavaScript 1.5 (ECMAScript 3).

escenas a utilizar

Debido al problema de precisión de los cálculos en JavaScript, el cálculo directo puede provocar varios errores. Para resolver este problema, puede utilizar la biblioteca BigNumber.js. Su principio general es tratar todos los números como cadenas y volver a implementar la lógica de cálculo.

Ejemplo de uso

  1. Instalar bignumber.js

ohpm instala  bignumber.js

Configuración del entorno OpenHarmony ohpm  y más, consulte Cómo instalar el paquete OpenHarmony ohpm

  1. importar bignumber.js

importar BigNumber desde "bignumber.js";

  1. interfaz de llamada

let x = new BigNumber(123.4567);

let y = BigNumber('123456.7e-3');

sea ​​z = nuevo BigNumber(x);

esperar ( x ) .assertEqual(y) ;

esperar( y ).assertEqual( z ) ;

esperar(x).assertEqual( z ) ;

La biblioteca exporta un único constructor BigNumber que acepta un valor de tipo Número, Cadena o BigNumber.

let x = new BigNumber('1111222233334444555566');

x.toString(); // "1.111222233334444555566e+21"

x.toFixed(); // "1111222233334444555566"

Para obtener el valor de cadena de un BigNumber, use toString() o toFixed().

// El uso de literales numéricos con más de 15 dígitos significativos produce una pérdida de precisión.

nuevo GranNúmero(1.0000000000000001) // '1'

nuevo GranNúmero(88259496234518.57) // '88259496234518.56'

nuevo GranNúmero(99999999999999999999) // '1000000000000000000000'

// El uso de literales numéricos fuera del rango numérico resultará en una pérdida de precisión.

nuevo BigNumber(2e+308) // 'Infinito'

nuevo GranNúmero(1e-324) // '0'

//Un resultado inesperado de una operación aritmética en un valor numérico provocó una pérdida de precisión.

nuevo GranNúmero(0.7 + 0.1) // '0.7999999999999999'

Si no conoce bien la precisión limitada de los valores numéricos, se recomienda crear BigNumbers a partir de valores de cadena en lugar de valores numéricos para evitar una posible pérdida de precisión.

nuevo BigNumber(Number.MAX_VALUE.toString(2), 2)

       Al crear números grandes a partir de números, tenga en cuenta que los números grandes se crean a partir del valor decimal del número, no de su valor binario subyacente. Si desea lo último, pase el valor de Número y especifique la base 2.toString() o toString(2).

a = nuevo Número Grande(1011, 2) // "11"

b = nuevo Número Grande('zz.9', 36) // "1295.25"

c = a.más(b)   

Se pueden crear números grandes a partir de valores en bases 2 a 36. Consulte ALFABETO para obtener una extensión sobre esto.

0,3 - 0,1 // 0,19999999999999998

x = nuevo Gran Número(0.3)

x.menos(0.1) // "0.2"

x // "0,3"

Mejor rendimiento si no se especifica la base 10 para los valores decimales. Especifique base 10 solo si desea limitar el número de decimales en el valor de entrada a la configuración actual de INK http://mik. BigNumber es inmutable porque sus métodos no pueden cambiarlo.

x.divididoPor(y).más(z).veces(9)

x.times('1.23456780123456789e+9').plus(9876.5432321).dividedBy('4444562598.111772').integerValue() // "0.3"  

Los métodos que devuelven BigNumber se pueden encadenar.

x = nuevo número grande (255,5)

x.toExponential(5) // "2.55500e+2"

x.toFixed(5) // "255.50000"

x.toPrecision(5) // "255,50"

x.toNumber() // 255.5

Al igual que el tipo de número de JavaScript, BigNumber tiene los métodos toExponential, toFixed y toPrecision.

x.toString(16) // "ff.8"

Se puede especificar una base para toString.

El rendimiento es mejor si no se especifica ninguna base 10, es decir, se utiliza toString() en lugar de toString(10). Si desea limitar el número de decimales en la cadena a la configuración actual de DECIMAL_PLACES, especifique solo la base 10.

y = nuevo Número Grande('1234567.898765')

y.toFormat(2) // "1.234.567,90"

Existe un método toFormat que puede resultar útil para la internacionalización.

y = nuevo Número Grande(355)

pi = y.divididoPor(113) // "3.1415929204"

pi.toFraction() // [ "7853982301", "2500000000" ]

pi.toFraction(1000) // [ "355", "113" ]

Existe un método toFraction que toma un parámetro de denominador máximo opcional.

x = nuevo Gran Número(NaN) // "NaN"

y = nuevo BigNumber(Infinito) // "Infinito"

x.isNaN() && !y.isNaN() && !x.isFinite() && !y.isFinite()

y los métodos isNaN e isFinite, ya que y son valores válidos. NaN, Infinito, BigNumber.

x = nuevo Gran Número(-123.456);

xc // [ 123, 45600000000000 ] coeficiente (es decir, significativo)

xe // 2 exponente

xs // -1 signo

El valor de BigNumber se almacena en formato de punto flotante decimal con coeficiente, exponente y signo.

// Establece DECIMAL_LACES para el constructor BigNumber original

GranNumber.set({ DECIMAL_PLACES: 10 })

// Crea otro constructor BigNumber, opcionalmente pasando un objeto de configuración

BN = GranNumber.clone({ DECIMAL_PLACES: 5 })

x = nuevo Número Grande(1)

y = nuevo BN(1)

x.div(3) // '0.3333333333'

y.div(3) // '0.33333'

Para uso avanzado, se pueden crear múltiples constructores BigNumber, cada uno con su propia configuración independiente.

Dirección del código fuente y dirección del almacén de Ohpm

Las anteriores son algunas introducciones básicas de bignumber.js. Para obtener más detalles, consulte el documento bignumber.js en la dirección de origen o en la dirección del almacén de ohpm.

Referencias

Cómo instalar el paquete OpenHarmony ohpm :

API de bignumber.js:

Dirección de la fuente:

dirección ohpm:

Haga clic para seguir y leer el texto original para obtener más información.

Supongo que te gusta

Origin blog.csdn.net/OpenHarmony_dev/article/details/132402449
Recomendado
Clasificación