-
Notifications
You must be signed in to change notification settings - Fork 405
Closed
Milestone
Description
Description
The Decimal class from @cosmjs/math currently rejects negative values and throws an error when the input contains a "-" sign.
This makes it impossible to represent or work with signed decimal numbers in CosmJS.
π Example
import { Decimal } from "@cosmjs/math";
Decimal.fromUserInput("-0.123", 3);
// β Error: Negative values not supportedπ‘ Expected behavior
Decimal should support negative values, or at least provide an alternative (e.g. SignedDecimal) for cases where signed arithmetic is required.
π§ Context
In the Go Cosmos SDK, the equivalent type sdk.Dec does support negative numbers.
This is useful for many valid scenarios, such as:
- Calculating deltas or differences between balances or prices
- Expressing signed ratios or deviations
- Performing off-chain accounting or simulation logic
In CosmJS, however, the current implementation appears to be limited to non-negative quantities (like tokens, gas prices, etc.), which restricts flexibility in analytical or off-chain use cases.
π Proposal
- Extend the existing
Decimalclass to allow negative values, or - Introduce a new
SignedDecimaltype that:- Keeps the same precision handling
- Encodes/decodes safely
- Maintains backward compatibility with positive-only decimals
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels