Thư viện tương tự như bignumber. js, nhưng ở đây độ chính xác được chỉ định theo các chữ số có nghĩa thay vì số thập phân và tất cả các phép tính được làm tròn đến độ chính xác [tương tự như mô-đun thập phân của Python] thay vì chỉ các phép tính liên quan đến phép chia
Thư viện này cũng bổ sung các hàm lượng giác, trong số các hàm khác và hỗ trợ các lũy thừa không nguyên, khiến nó trở thành một thư viện lớn hơn đáng kể so với bignumber. js và thậm chí nhỏ hơn lớn. js
Để biết phiên bản nhẹ hơn của thư viện này không có các hàm lượng giác, hãy xem phần thập phân. ánh sáng js
Trọng tải
Thư viện là tệp JavaScript thập phân duy nhất. js hoặc mô-đun ES số thập phân. mjs
trình duyệt
import Decimal from './path/to/decimal.mjs'; ...
Nút. js
npm install decimal.js
const Decimal = require['decimal.js']; import Decimal from 'decimal.js'; import {Decimal} from 'decimal.js';
Sử dụng
Trong tất cả các ví dụ bên dưới, dấu chấm phẩy và lệnh gọi
const Decimal = require['decimal.js']; import Decimal from 'decimal.js'; import {Decimal} from 'decimal.js';2 không được hiển thị. Nếu một giá trị được nhận xét nằm trong dấu ngoặc kép, điều đó có nghĩa là _______2_______2 đã được gọi trên biểu thức trước đó
Thư viện xuất một hàm tạo duy nhất,
const Decimal = require['decimal.js']; import Decimal from 'decimal.js'; import {Decimal} from 'decimal.js';4, hàm này mong đợi một đối số duy nhất là một số, chuỗi hoặc đối tượng Thập phân
x = new Decimal[123.4567] y = new Decimal['123456.7e-3'] z = new Decimal[x] x.equals[y] && y.equals[z] && x.equals[z] // true
Nếu sử dụng các giá trị có nhiều hơn một vài chữ số, bạn nên chuyển chuỗi thay vì số để tránh khả năng mất độ chính xác
// Precision loss from using numeric literals with more than 15 significant digits. new Decimal[1.0000000000000001] // '1' new Decimal[88259496234518.57] // '88259496234518.56' new Decimal[99999999999999999999] // '100000000000000000000' // Precision loss from using numeric literals outside the range of Number values. new Decimal[2e+308] // 'Infinity' new Decimal[1e-324] // '0' // Precision loss from the unexpected result of arithmetic with Number values. new Decimal[0.7 + 0.1] // '0.7999999999999999'
Cũng như các số trong JavaScript, các chuỗi có thể chứa dấu gạch dưới dưới dạng dấu phân cách để cải thiện khả năng đọc
________số 8_______
Các giá trị chuỗi ở dạng ký hiệu nhị phân, thập lục phân hoặc bát phân cũng được chấp nhận nếu bao gồm tiền tố thích hợp
x = new Decimal['0xff.f'] // '255.9375' y = new Decimal['0b10101100'] // '172' z = x.plus[y] // '427.9375' z.toBinary[] // '0b110101011.1111' z.toBinary[13] // '0b1.101010111111p+8' // Using binary exponential notation to create a Decimal with the value of `Number.MAX_VALUE`. x = new Decimal['0b1.1111111111111111111111111111111111111111111111111111p+1023'] // '1.7976931348623157081e+308'
Các trường hợp thập phân là bất biến theo nghĩa là chúng không bị thay đổi bởi các phương thức của chúng
0.3 - 0.1 // 0.19999999999999998 x = new Decimal[0.3] x.minus[0.1] // '0.2' x // '0.3'
Các phương thức trả về Số thập phân có thể được xâu chuỗi
x.dividedBy[y].plus[z].times[9].floor[] x.times['1.23456780123456789e+9'].plus[9876.5432321].dividedBy['4444562598.111772'].ceil[]
Nhiều tên phương thức có bí danh ngắn hơn
x.squareRoot[].dividedBy[y].toPower[3].equals[x.sqrt[].div[y].pow[3]] // true x.comparedTo[y.modulo[z].negated[] === x.cmp[y.mod[z].neg[]] // true
Hầu hết các phương thức của các đối tượng
const Decimal = require['decimal.js']; import Decimal from 'decimal.js'; import {Decimal} from 'decimal.js';0 và
const Decimal = require['decimal.js']; import Decimal from 'decimal.js'; import {Decimal} from 'decimal.js';1 của JavaScript đều được sao chép
npm install decimal.js0
Và có các phương thức
const Decimal = require['decimal.js']; import Decimal from 'decimal.js'; import {Decimal} from 'decimal.js';7 và
const Decimal = require['decimal.js']; import Decimal from 'decimal.js'; import {Decimal} from 'decimal.js';8, vì
const Decimal = require['decimal.js']; import Decimal from 'decimal.js'; import {Decimal} from 'decimal.js';9 và
x = new Decimal[123.4567] y = new Decimal['123456.7e-3'] z = new Decimal[x] x.equals[y] && y.equals[z] && x.equals[z] // true0 là các giá trị
const Decimal = require['decimal.js']; import Decimal from 'decimal.js'; import {Decimal} from 'decimal.js';4 hợp lệ
npm install decimal.js1
Ngoài ra còn có một phương thức
x = new Decimal[123.4567] y = new Decimal['123456.7e-3'] z = new Decimal[x] x.equals[y] && y.equals[z] && x.equals[z] // true2 với đối số mẫu số tối đa tùy chọn
npm install decimal.js2
Tất cả các phép tính được làm tròn theo số chữ số có nghĩa và chế độ làm tròn được chỉ định bởi các thuộc tính
x = new Decimal[123.4567] y = new Decimal['123456.7e-3'] z = new Decimal[x] x.equals[y] && y.equals[z] && x.equals[z] // true3 và
x = new Decimal[123.4567] y = new Decimal['123456.7e-3'] z = new Decimal[x] x.equals[y] && y.equals[z] && x.equals[z] // true4 của Hàm tạo thập phân
Để sử dụng nâng cao, có thể tạo nhiều hàm tạo thập phân, mỗi hàm có cấu hình độc lập riêng áp dụng cho tất cả các số thập phân được tạo từ nó
npm install decimal.js3
Giá trị của Số thập phân được lưu trữ ở định dạng dấu phẩy động theo các chữ số, số mũ và dấu của nó, nhưng các thuộc tính này phải được coi là chỉ đọc