mcpField
D
decimal-js

decimal-js

github.com/dobroslavradosavljevic開発344 回インストール3 日前に更新
リポジトリ

decimal-js について

decimal.js v10を使う開発者向けに、任意精度の十進演算を案内するスキルです。設定、丸め、金額処理、シリアライズ、高度な数学を扱い、文字列による値の生成やcloneでの設定分離を重視します。

主な機能

  1. 01任意精度の十進演算の案内
  2. 02精度と丸めモードの設定
  3. 03金額処理とシリアライズ
  4. 04cloneによる設定の分離
  5. 05高度な数学とライブラリ選択の解説

活用シーン

  1. 01浮動小数点誤差を避けた通貨計算
  2. 02指定した小数位への丸め
  3. 03JSONやストレージで十進値を受け渡し
  4. 04ライブラリや領域ごとにDecimal設定を分離

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dobroslavradosavljevic/skills --skill decimal-js

インストール後、Claude Code で/decimal-jsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
advanced-ecosystem.md
arithmetic-api.md
config-rounding.md
money-serialization.md
pitfalls.md
setup-core.md
source-map.md

詳細

decimal.js

decimal.js v10の任意精度十進演算(インスタンスの生成、設定、丸め、金額を安全に扱うパターン、シリアライズ、高度な数学関数)には、このスキルを使用してください。

ワークフロー

  1. コードを変更する前に、ローカルの状況を確認します。
    • パッケージ:decimal.js(および、存在する場合は兄弟ライブラリのdecimal.js-light、bignumber.js、big.js)。
    • バージョン:対象はv10(現行は10.6.0)。同梱のdecimal.d.ts(型定義でBigIntに対応したのは10.6.0以降)。
    • ドメイン:金額/通貨、科学技術計算、または一般用途。これに応じて、cloneの設定や、有効桁数のprecisionだけで十分かどうかが決まります。
    • インポート:「decimal.js」からのデフォルトまたは名前付きのDecimal。
  2. バージョンが不明確な場合や、丸め、金額、三角関数、ライブラリの分離に関わる作業では、ドキュメントを更新します。source-map.mdから始めてください。
  3. 詳細は以下を参照してください。
  4. プロジェクトのコンストラクタースタイル(Decimalかドメイン別のclone)に合わせます。公開ライブラリ内では、グローバルなDecimal.setを呼び出さないでください。
  5. 型チェックに加え、文字列からの生成、丸めモード、toDP/toFixed、シリアライズのラウンドトリップをテストして検証します。

ライブラリの選択フローチャート

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

基本的な判断基準

  • 金額や複数桁の値は、文字列(またはBigInt/Decimal)から生成します。new Decimal(0.1 + 0.2)のような使い方や、先にNumberで演算する方法は避けてください。
  • インスタンスは不変です。メソッドをチェーンして使用し、インスタンスがその場で変更されることを想定しないでください。
  • precisionは、(ほぼすべての)算術演算結果の有効桁数です。通貨の小数点以下の桁数ではありません。固定の小数点以下桁数には、toDecimalPlaces/toDP(文字列の場合はtoFixed)を使用してください。
  • ライブラリや複数のドメインを扱うアプリでは、**Decimal.clone({…})**を優先してください。アプリ全体の起動時設定に限り、Decimal.setを使用します。
  • 値の等価性は、**.eq/.cmp**で判定します。===/==は使用しないでください。
  • シリアライズには文字列(toJSON/toFixed/toString)を使用します。金額や永続化する値には、toNumber()を使用しないでください。
  • デフォルトの丸めモードは**ROUND_HALF_UP(4)**です。金融用途では、丸めモード(HALF_UP/HALF_EVEN/管轄地域の規則)を明示的に選択してください。
  • 設定には**set/config/clone**を使用します。Decimal.precision = …を直接代入しないでください(検証がスキップされます)。

検証

リポジトリで定められたコマンドを優先してください。該当する項目を確認します。

  • bun pm ls decimal.js(移行時はlight/big/bignumberも確認)。
  • Decimal.Value、Decimal.Config、cloneコンストラクターの型チェック。
  • テスト:文字列と数値からの生成、eqと===の違い、toDP/toFixedの丸めモード、端数の配分/税計算の境界ケース、JSONの復元(new Decimal(dto.amount))、必要に応じて符号付きゼロ。
  • light版とフル版の選択時に限り、バンドルサイズを確認します。

実行したチェックと実行しなかったチェック、および未確定のバージョン/設定に関する前提を報告してください。

コメント