Socket
Socket
Sign inDemoInstall

@cosmjs/math

Package Overview
Dependencies
Maintainers
2
Versions
106
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cosmjs/math - npm Package Compare versions

Comparing version 0.26.6 to 0.26.8

20

build/decimal.d.ts

@@ -10,2 +10,16 @@ import { Uint32, Uint53, Uint64 } from "./integers";

static fromAtomics(atomics: string, fractionalDigits: number): Decimal;
/**
* Creates a Decimal with value 0.0 and the given number of fractial digits.
*
* Fractional digits are not relevant for the value but needed to be able
* to perform arithmetic operations with other decimals.
*/
static zero(fractionalDigits: number): Decimal;
/**
* Creates a Decimal with value 1.0 and the given number of fractial digits.
*
* Fractional digits are not relevant for the value but needed to be able
* to perform arithmetic operations with other decimals.
*/
static one(fractionalDigits: number): Decimal;
private static verifyFractionalDigits;

@@ -17,2 +31,8 @@ static compare(a: Decimal, b: Decimal): number;

private constructor();
/** Creates a new instance with the same value */
private clone;
/** Returns the greatest decimal <= this which has no fractional part (rounding down) */
floor(): Decimal;
/** Returns the smallest decimal >= this which has no fractional part (rounding up) */
ceil(): Decimal;
toString(): string;

@@ -19,0 +39,0 @@ /**

@@ -63,2 +63,22 @@ "use strict";

}
/**
* Creates a Decimal with value 0.0 and the given number of fractial digits.
*
* Fractional digits are not relevant for the value but needed to be able
* to perform arithmetic operations with other decimals.
*/
static zero(fractionalDigits) {
Decimal.verifyFractionalDigits(fractionalDigits);
return new Decimal("0", fractionalDigits);
}
/**
* Creates a Decimal with value 1.0 and the given number of fractial digits.
*
* Fractional digits are not relevant for the value but needed to be able
* to perform arithmetic operations with other decimals.
*/
static one(fractionalDigits) {
Decimal.verifyFractionalDigits(fractionalDigits);
return new Decimal("1" + "0".repeat(fractionalDigits), fractionalDigits);
}
static verifyFractionalDigits(fractionalDigits) {

@@ -84,2 +104,30 @@ if (!Number.isInteger(fractionalDigits))

}
/** Creates a new instance with the same value */
clone() {
return new Decimal(this.atomics, this.fractionalDigits);
}
/** Returns the greatest decimal <= this which has no fractional part (rounding down) */
floor() {
const factor = new bn_js_1.default(10).pow(new bn_js_1.default(this.data.fractionalDigits));
const whole = this.data.atomics.div(factor);
const fractional = this.data.atomics.mod(factor);
if (fractional.isZero()) {
return this.clone();
}
else {
return Decimal.fromAtomics(whole.mul(factor).toString(), this.fractionalDigits);
}
}
/** Returns the smallest decimal >= this which has no fractional part (rounding up) */
ceil() {
const factor = new bn_js_1.default(10).pow(new bn_js_1.default(this.data.fractionalDigits));
const whole = this.data.atomics.div(factor);
const fractional = this.data.atomics.mod(factor);
if (fractional.isZero()) {
return this.clone();
}
else {
return Decimal.fromAtomics(whole.addn(1).mul(factor).toString(), this.fractionalDigits);
}
}
toString() {

@@ -86,0 +134,0 @@ const factor = new bn_js_1.default(10).pow(new bn_js_1.default(this.data.fractionalDigits));

@@ -105,2 +105,70 @@ "use strict";

});
describe("zero", () => {
it("works", () => {
expect(decimal_1.Decimal.zero(0).toString()).toEqual("0");
expect(decimal_1.Decimal.zero(1).toString()).toEqual("0");
expect(decimal_1.Decimal.zero(2).toString()).toEqual("0");
expect(decimal_1.Decimal.zero(30).toString()).toEqual("0");
expect(decimal_1.Decimal.zero(0).fractionalDigits).toEqual(0);
expect(decimal_1.Decimal.zero(1).fractionalDigits).toEqual(1);
expect(decimal_1.Decimal.zero(2).fractionalDigits).toEqual(2);
expect(decimal_1.Decimal.zero(30).fractionalDigits).toEqual(30);
expect(decimal_1.Decimal.zero(0).atomics).toEqual("0");
expect(decimal_1.Decimal.zero(1).atomics).toEqual("0");
expect(decimal_1.Decimal.zero(2).atomics).toEqual("0");
expect(decimal_1.Decimal.zero(30).atomics).toEqual("0");
expect(() => decimal_1.Decimal.zero(NaN)).toThrowError(/Fractional digits is not an integer/i);
expect(() => decimal_1.Decimal.zero(1.2)).toThrowError(/Fractional digits is not an integer/i);
});
});
describe("one", () => {
it("works", () => {
expect(decimal_1.Decimal.one(0).toString()).toEqual("1");
expect(decimal_1.Decimal.one(1).toString()).toEqual("1");
expect(decimal_1.Decimal.one(2).toString()).toEqual("1");
expect(decimal_1.Decimal.one(30).toString()).toEqual("1");
expect(decimal_1.Decimal.one(0).fractionalDigits).toEqual(0);
expect(decimal_1.Decimal.one(1).fractionalDigits).toEqual(1);
expect(decimal_1.Decimal.one(2).fractionalDigits).toEqual(2);
expect(decimal_1.Decimal.one(30).fractionalDigits).toEqual(30);
expect(decimal_1.Decimal.one(0).atomics).toEqual("1");
expect(decimal_1.Decimal.one(1).atomics).toEqual("10");
expect(decimal_1.Decimal.one(2).atomics).toEqual("100");
expect(decimal_1.Decimal.one(30).atomics).toEqual("1000000000000000000000000000000");
expect(() => decimal_1.Decimal.one(NaN)).toThrowError(/Fractional digits is not an integer/i);
expect(() => decimal_1.Decimal.one(1.2)).toThrowError(/Fractional digits is not an integer/i);
});
});
describe("floor", () => {
it("works", () => {
// whole numbers
expect(decimal_1.Decimal.fromUserInput("0", 0).floor().toString()).toEqual("0");
expect(decimal_1.Decimal.fromUserInput("1", 0).floor().toString()).toEqual("1");
expect(decimal_1.Decimal.fromUserInput("44", 0).floor().toString()).toEqual("44");
expect(decimal_1.Decimal.fromUserInput("0", 3).floor().toString()).toEqual("0");
expect(decimal_1.Decimal.fromUserInput("1", 3).floor().toString()).toEqual("1");
expect(decimal_1.Decimal.fromUserInput("44", 3).floor().toString()).toEqual("44");
// with fractional part
expect(decimal_1.Decimal.fromUserInput("0.001", 3).floor().toString()).toEqual("0");
expect(decimal_1.Decimal.fromUserInput("1.999", 3).floor().toString()).toEqual("1");
expect(decimal_1.Decimal.fromUserInput("0.000000000000000001", 18).floor().toString()).toEqual("0");
expect(decimal_1.Decimal.fromUserInput("1.999999999999999999", 18).floor().toString()).toEqual("1");
});
});
describe("ceil", () => {
it("works", () => {
// whole numbers
expect(decimal_1.Decimal.fromUserInput("0", 0).ceil().toString()).toEqual("0");
expect(decimal_1.Decimal.fromUserInput("1", 0).ceil().toString()).toEqual("1");
expect(decimal_1.Decimal.fromUserInput("44", 0).ceil().toString()).toEqual("44");
expect(decimal_1.Decimal.fromUserInput("0", 3).ceil().toString()).toEqual("0");
expect(decimal_1.Decimal.fromUserInput("1", 3).ceil().toString()).toEqual("1");
expect(decimal_1.Decimal.fromUserInput("44", 3).ceil().toString()).toEqual("44");
// with fractional part
expect(decimal_1.Decimal.fromUserInput("0.001", 3).ceil().toString()).toEqual("1");
expect(decimal_1.Decimal.fromUserInput("1.999", 3).ceil().toString()).toEqual("2");
expect(decimal_1.Decimal.fromUserInput("0.000000000000000001", 18).ceil().toString()).toEqual("1");
expect(decimal_1.Decimal.fromUserInput("1.999999999999999999", 18).ceil().toString()).toEqual("2");
});
});
describe("toString", () => {

@@ -107,0 +175,0 @@ it("displays no decimal point for full numbers", () => {

21

package.json
{
"name": "@cosmjs/math",
"version": "0.26.6",
"version": "0.26.8",
"description": "Math helpers for blockchain projects",

@@ -31,3 +31,3 @@ "contributors": [

"format-text": "prettier --write \"./*.md\"",
"test-node": "node --require esm jasmine-testrunner.js",
"test-node": "yarn node jasmine-testrunner.js",
"test-edge": "yarn pack-web && karma start --single-run --browsers Edge",

@@ -44,7 +44,7 @@ "test-firefox": "yarn pack-web && karma start --single-run --browsers Firefox",

"dependencies": {
"bn.js": "^4.11.8"
"bn.js": "^5.2.0"
},
"devDependencies": {
"@istanbuljs/nyc-config-typescript": "^1.0.1",
"@types/bn.js": "^4.11.6",
"@types/bn.js": "^5",
"@types/eslint-plugin-prettier": "^3",

@@ -55,4 +55,4 @@ "@types/jasmine": "^3.8",

"@types/karma-jasmine-html-reporter": "^1",
"@typescript-eslint/eslint-plugin": "^4.28",
"@typescript-eslint/parser": "^4.28",
"@typescript-eslint/eslint-plugin": "^5.13.0",
"@typescript-eslint/parser": "^5.13.0",
"buffer": "^6.0.3",

@@ -67,6 +67,5 @@ "eslint": "^7.5",

"glob": "^7.1.6",
"jasmine": "^3.8",
"jasmine-core": "^3.7.1",
"jasmine": "^3.99",
"jasmine-spec-reporter": "^6",
"karma": "^6.1.1",
"karma": "^6.3.14",
"karma-chrome-launcher": "^3.1.0",

@@ -81,4 +80,4 @@ "karma-firefox-launcher": "^2.1.0",

"ts-node": "^8",
"typedoc": "^0.21",
"typescript": "~4.3",
"typedoc": "^0.22",
"typescript": "~4.4",
"webpack": "^5.32.0",

@@ -85,0 +84,0 @@ "webpack-cli": "^4.6.0"

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc