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]>
18 lines
819 B
Markdown
18 lines
819 B
Markdown
# 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`.
|
||
|
||
```go
|
||
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`](https://github.com/hanzoai/money). Stdlib only.
|
||
MIT OR Apache-2.0, at your option — per [HIP-0137](https://github.com/hanzoai/hips/blob/main/HIPs/hip-0137-one-license.md).
|