dobroslavradosavljevic/skills

decimal-js

Build, review, debug, migrate, or plan arbitrary-precision decimal math with decimal.js v10.

First seen Aug 3, 2026

Installation

$ npx skills add dobroslavradosavljevic/skills --skill decimal-js

Summary

  • Build, review, debug, migrate, or plan arbitrary-precision decimal math with decimal.js v10.
  • Use for decimal.js, Decimal, Decimal.clone, Decimal.set, precision, rounding modes, ROUND_HALF_UP, ROUND_HALF_EVEN, toDecimalPlaces, toFixed, plus, minus, times, dividedBy, money/currency math, BigInt decimals, NaN/Infinity handling, trig/exp/ln, decimal.js-light, and comparisons with big.js or bignumber.js.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from dobroslavradosavljevic/skills · top by installs.

npx skills add dobroslavradosavljevic/skills

Browse all from dobroslavradosavljevic/skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 1
License LICENSE
Default branch main
Open issues 0
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,130 B
  • docs SUMMARY.md 420 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 34 installs

SKILL.md

decimal.js

Use this skill for decimal.js v10 arbitrary-precision decimal arithmetic: construction, config, rounding, money-safe patterns, serialization, and advanced math.

Workflow

  1. Inspect the local surface before changing code:

- Package: decimal.js (and siblings decimal.js-light, bignumber.js, big.js if present). - Version: target v10 (current 10.6.0); bundled decimal.d.ts (BigInt in types since 10.6.0). - Domain: money/currency, scientific, or general — this drives clone config and whether significant-digit precision alone is enough. - Imports: default or named Decimal from "decimal.js".

  1. Refresh docs when versions are unclear or work touches rounding, money, trig, or library isolation. Start from [source-map.md](references/source-map.md).
  2. Route deeper detail:

- Install, constructor, immutability, Value types: [setup-core.md](references/setup-core.md). - Arithmetic, compare, format, static helpers: [arithmetic-api.md](references/arithmetic-api.md). - set/config/clone, rounding modes, modulo: [config-rounding.md](references/config-rounding.md). - Money, JSON/SSR/store transport: [money-serialization.md](references/money-serialization.md). - Trig, random/crypto, light vs full, MikeMcl ecosystem: [advanced-ecosystem.md](references/advanced-ecosystem.md). - Anti-patterns and upgrades: [pitfalls.md](references/pitfalls.md).

  1. Match the project's constructor style (Decimal vs domain clone). Do not call global Decimal.set inside published libraries.
  2. Verify with typecheck plus tests for string construction, rounding mode, toDP/toFixed, and serialization round-trips.

Library Decision Tree

Need trig / ln / exp / non-integer pow / wide exponents?
  → decimal.js (this skill)

Exact add/mul until division, finance-first, smaller API?
  → consider bignumber.js (author guidance) — or stay on decimal.js with Money clone + toDP

Tiny bundle, basic DP only?
  → big.js or decimal.js-light

Using decimal.js for money anyway?
  → Decimal.clone({ precision: 28, rounding: … }) + construct from strings + round once with toDP/toFixed

Core Judgment

  • Construct from strings (or BigInt / Decimal) for money and multi-digit values. Never new Decimal(0.1 + 0.2) or Number arithmetic first.
  • Instances are immutable. Chain methods; do not expect in-place mutation.
  • precision = significant digits for (almost) all arithmetic results — not currency decimal places. Use toDecimalPlaces / toDP (or toFixed for strings) for fixed fractional places.
  • Prefer Decimal.clone({…}) for libraries and multi-domain apps. Use Decimal.set only for app-wide boot config.
  • Value equality: .eq / .cmp, never === / ==.
  • Serialize as strings (toJSON / toFixed / toString). Avoid toNumber() for money or persisted values.
  • Default rounding is ROUNDHALFUP (4). Pick explicitly for finance (HALFUP / HALFEVEN / jurisdiction rules).
  • Configure via set/config/clone — never assign Decimal.precision = … directly (skips validation).

Verification

Prefer repository-owned commands. Cover the relevant subset:

  • bun pm ls decimal.js (and light / big / bignumber if migrating).
  • Typecheck for Decimal.Value, Decimal.Config, clone constructors.
  • Tests: string vs number construction, eq vs ===, toDP/toFixed rounding modes, penny-allocation / tax edges, JSON hydrate (new Decimal(dto.amount)), signed zero if relevant.
  • Bundle/size check only when choosing light vs full.

Report which checks ran, which did not, and version/config assumptions that remain.