Types phase 2 — the "money problem". A splice-on-demand bignum engine (runtime/native/bignum.ludic, self-contained, only intrinsics) exposed as two namespaces: - BigInt.* — arbitrary-precision integer (sign-magnitude, base-1e9 limbs): from/parse, add/sub/mul/pow, div/mod (by int), cmp/eq/is_zero, to_int, str. For idle counters and exact huge currencies that overflow a 32/64-bit int. - Decimal.* — exact base-10 fixed point (BigInt mantissa + decimal scale): from/parse, exact add/sub/mul, cmp/eq, scale/rescale (truncate), str. So 0.10 + 0.20 is exactly 0.30 — no binary rounding. Both exact => deterministic; no f32/f64. Wired: parser splice trigger (g_uses_bignum), emit_call dispatch, reseeded seed, a self-asserting example (examples/library/bignum.ludic + feat_case), and per-symbol docs + inventory. All suites green incl. golden renders byte-identical and the bootstrap fixpoint. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
22 lines
473 B
Markdown
22 lines
473 B
Markdown
---
|
|
id: decimal-str
|
|
name: Decimal.str
|
|
category: decimal
|
|
kind: namespace-method
|
|
tokens: Decimal.str
|
|
sig: Decimal.str(d) -> string
|
|
tip: Render a decimal as text.
|
|
order: 10
|
|
ns: Decimal
|
|
member: str
|
|
---
|
|
|
|
Renders the value as text with its decimal point in place (a leading <code>-</code> when negative). This is how you display or serialize money.
|
|
|
|
```ludic
|
|
program Demo {
|
|
handler Step phase Update {
|
|
Screen.draw_text(8, 8, Decimal.str(balance), Color.White, 1)
|
|
}
|
|
}
|
|
```
|