Softanza
StartFrançais
Softanza
Reference · stzNumber

Same()

MATHEMATICAL equality, as opposed to Haro's `=` on the rendered strings. "1.50" and "1.5" are the same number; "0.1" and 0.1 are not the same BITS.

also: same number equal in value numerically equal

also written: IsSameAs

Basic examples (2)

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
oHalf = new stzNumber("1/2")
# a half is 0.5
? oHalf.Same("0.5")
# ...whether written as a string or a number
? oHalf.Same(0.5)
# ...and equals another spelling of itself
? oHalf.Same("2/4")
# ...and is not 0.6
? oHalf.Same("0.6")
# a third is NOT 0.333
? (new stzNumber("1/3")).Same("0.333")
# ...nor 0.3333333333
? (new stzNumber("1/3")).Same("0.3333333333")
# a whole number reached through fractions compares equal
? (new stzNumber("2/3")).AddQ("1/3").Same(1)
Output
1
1
1
0
0
0
1

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

Scope (2)

Softanza
oPrice = new stzNumber("1.50")
# 1.50 and 1.5 are the same number
? oPrice.Same("1.5")
# ...whether the other side is a string or a number
? oPrice.Same(1.5)
# ...and 1.6 is not
? oPrice.Same("1.6")
oZero = new stzNumber("0")
# 0 and -0 are the same number
? oZero.Same("-0")
# ...and so is 0.000
? oZero.Same("0.000")
# IsSameAs reads the same
? oZero.IsSameAs("0.00")
# it compares against another stzNumber too
? oPrice.Same(new stzNumber("1.5"))
Output
1
1
0
1
1
1
1

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

Softanza
oThird = new stzNumber("1/3")
oThird.Add("2/3")
# a third plus two thirds is ONE
? oThird.Content()
# ...exactly
? oThird.IsExact()
# ...and equals the number 1
? oThird.Same(1)
# a third plus a sixth
? (new stzNumber("1/3")).AddQ("1/6").Content()
# a half less a third
? (new stzNumber("1/2")).SubtractQ("1/3").Content()
# two thirds of three quarters
? (new stzNumber("2/3")).MultiplyByQ("3/4").Content()
# a half divided by a quarter is two
? (new stzNumber("1/2")).DivideQ("1/4").Content()
# every one of those is exact
? (new stzNumber("2/3")).MultiplyByQ("3/4").IsExact()
# a third times three is one
? (new stzNumber("1/3")).MultiplyByQ(3).Content()
# ...and adding zero changes nothing
? (new stzNumber("1/3")).AddQ(0).Content()
Output
1
1
1
1/2
1/6
1/2
2
1
1
1/3

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from numeric_rationals_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