mirror of
https://github.com/hanzoai/decimal.git
synced 2026-09-30 21:40:38 +00:00
HIP-0137 "One License" (hanzoai/hips, HIPs/hip-0137-one-license.md) puts BSD-3-Clause out of scope for hanzoai: original Hanzo work takes the standard MIT OR Apache-2.0 dual licence, and only forks keep an upstream licence. LICENSE is now the dual declaration; LICENSE-APACHE and LICENSE-MIT carry the two texts beside it. The existing copyright holder and years are preserved verbatim. Provenance: stdlib-only dependency graph, written from scratch. The one per-file BSD-3-Clause header moved with it. Co-authored-by: Hanzo Dev <[email protected]>
819 B
819 B
decimal
Exact, arbitrary-precision fixed-point decimal for Go. A value is coefficient × 10⁻ˢᶜᵃˡᵉ
with a big.Int coefficient — no precision ceiling, no float, immutable.
Unlike int64/uint64 decimal & money libraries (which cap around 19 digits — about $9.20
at 18 decimals), this holds a fiat cent and an 18-decimal on-chain wei balance with equal
exactness. 0.1 + 0.2 is exactly 0.3.
d := decimal.MustParse("6.60")
cost := decimal.New(200, 0).Mul(d).Quo(decimal.New(1_000_000, 0), 18) // 200 tokens @ $6.60/1M
cost.String() // "0.00132" (never floored to 0)
The numeric core beneath hanzoai/money. Stdlib only.
MIT OR Apache-2.0, at your option — per HIP-0137.