Softanza
StartFrançais
Softanza
Reference · stzNumber

Representation()

Promotion is automatic and upward only: adding 1 to a 2^53 integer yields a :bigInteger, and nothing silently demotes. :rational and :complex are named in the plan and not built yet, so they are not reported -- a ladder that claims rungs it does not have is worse than a short one.

also: which representation what kind of number integer or decimal

Basic examples (2)

Softanza
oS = StzNumberQ("0.1")
oS.Add("0.2")
? oS.Content()
? oS.IsExact()
? oS.Representation()
Output
0.3
1
decimal

run on 2026-10-02 04:25 inside the library at commit 0e72e2e2c; taken from 07-a-number-that-says-why.en.md(opens in a new tab)

Softanza
oB = StzNumberQ("9007199254740993")
? oB.Representation()
oB.Add(1)
? oB.Content()
? 9007199254740993 + 1
Output
biginteger
9007199254740994
9007199254740992.00

run on 2026-10-02 04:25 inside the library at commit 0e72e2e2c; taken from 07-a-number-that-says-why.en.md(opens in a new tab)

Scope (5)

Softanza
oQ = StzNumberQ("1/3")
? oQ.Representation()
? oQ.IsExact()
oQ.Add("2/3")
? oQ.Content()
? oQ.Same(1)
Output
rational
1
1
1

run on 2026-10-02 04:25 inside the library at commit 0e72e2e2c; taken from 07-a-number-that-says-why.en.md(opens in a new tab)

Softanza
oMix = new stzNumber("1/4")
oMix.Add("0.25")
# a quarter plus 0.25 is a half
? oMix.Content()
# ...as a fraction, not 0.5
? oMix.Representation()
# ...and exactly
? oMix.IsExact()
# ...which is what lets a third survive meeting a decimal
? (new stzNumber("1/3")).AddQ("0.5").Content()
Output
1/2
rational
1
5/6

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from numeric_rationals_narrated.ring(opens in a new tab)

Softanza
oBig = new stzNumber("1/99999999999999999999999999999999")
# a 32-digit denominator survives construction
? oBig.Content()
# ...and reports as a fraction
? oBig.Representation()
oSum = new stzNumber("1/99999999999999999999999999999999")
oSum.Add("1/99999999999999999999999999999999")
# adding it to itself doubles the numerator
? oSum.Content()
# ...exactly
? oSum.IsExact()
# a fraction that reduces from big parts still lands on the small answer
? (new stzNumber("123456789012345678901234567890/246913578024691357802469135780")).Content()
Output
1/99999999999999999999999999999999
rational
2/99999999999999999999999999999999
1
1/2

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from numeric_rationals_narrated.ring(opens in a new tab)

Softanza
# a third is itself
? (new stzNumber("1/3")).Content()
# two quarters reduce
? (new stzNumber("2/4")).Content()
# six thirds reduce past being a fraction at all
? (new stzNumber("6/3")).Content()
# ...and report themselves as an integer
? (new stzNumber("4/2")).Representation()
# a zero numerator is just zero
? (new stzNumber("0/5")).Content()
# the sign lives on the numerator
? (new stzNumber("-1/2")).Content()
# ...even when it was written on the denominator
? (new stzNumber("1/-2")).Content()
# a fraction knows what it is
? (new stzNumber("1/3")).Representation()
# ...and answers the predicate
? (new stzNumber("1/3")).IsRational()
# while a decimal does not
? (new stzNumber("0.5")).IsRational()
Output
1/3
1/2
2
integer
0
-1/2
-1/2
rational
1
0

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from numeric_rationals_narrated.ring(opens in a new tab)

Softanza
# a small whole number
? (new stzNumber("42")).Representation()
# ...negative too
? (new stzNumber("-7")).Representation()
# a whole number past what an f64 holds exactly
? (new stzNumber("9007199254740992")).Representation()
# ...and far past it
? (new stzNumber("99999999999999999999999999999999")).Representation()
# a value with a fractional part
? (new stzNumber("19.99")).Representation()
# the predicates read the same
? (new stzNumber("99999999999999999999")).IsBigInteger()
# ...and say no when they should
? (new stzNumber("42")).IsBigInteger()
# ...for decimals
? (new stzNumber("0.5")).IsDecimalNumber()
oGrow = new stzNumber("9007199254740992")
oGrow.Add(1)
# it is still exact
? oGrow.Content()
# ...and reports the bigger rung
? oGrow.Representation()
Output
integer
integer
biginteger
biginteger
decimal
1
0
1
9007199254740993
biginteger

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from numeric_no_loss_narrated.ring(opens in a new tab)

The extensions of this method

Each extension, and whether it exists for this method; an extension that exists combines with the others (FindSTCS).

Extension
Exists
What it adds · The names
Q
no
does what the method does, then returns the object, so the call can be chained
QQ
no
chains on the next, more specific type of object (the Q ladder)
QQQ
no
chains on the most specific type of object (the Q ladder)
QRT
no
returns the result as an object of the requested type
CS
no
takes a case-sensitivity flag
ST
no
takes the position to start from (StartingAt)
IB
no
takes bounds that are included (IncludingBounds)
XT
no
the extended form: more parameters than the base method
XTT
no
yet another extension: a further extended form, after XT
Z
no
includes the position in what it returns
ZZ
no
returns positions as sections, [start, end]
W
no
selects by a condition
WF
no
selects by a condition, with the expressive keywords (@NextItem, @PreviousItem...)
D
no
takes a direction, forward or backward (Directional)
F
no
takes a function (the condition or the update is given as a function); the forms document also uses F for the future form, which defers the action
Many
no
works on a collection of items instead of one (the plural form)
Except
no
takes exceptions, what to leave out (the exceptional form)
U
no
returns the result without duplication

Every example is a test file of the library, run inside the library for this page; only those whose output kept every promise their file wrote are shown.

See also