Skip to content

Commit 4641d64

Browse files
committed
Created compare()
1 parent 922c1cd commit 4641d64

File tree

2 files changed

+232
-0
lines changed

2 files changed

+232
-0
lines changed
Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<refentry xml:id="bcmath-number.compare" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
3+
<refnamediv>
4+
<refname>BcMath\Number::compare</refname>
5+
<refpurpose>Compares two arbitrary precision numbers</refpurpose>
6+
</refnamediv>
7+
8+
<refsect1 role="description">
9+
&reftitle.description;
10+
<methodsynopsis role="BcMath\\Number">
11+
<modifier>public</modifier> <type>int</type><methodname>BcMath\Number::compare</methodname>
12+
<methodparam><type class="union"><type>BcMath\Number</type><type>string</type><type>int</type></type><parameter>num</parameter></methodparam>
13+
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>scale</parameter><initializer>&null;</initializer></methodparam>
14+
</methodsynopsis>
15+
<simpara>
16+
Compare two arbitrary precision numbers.
17+
This method behaves similar to the spaceship operator.
18+
</simpara>
19+
</refsect1>
20+
21+
<refsect1 role="parameters">
22+
&reftitle.parameters;
23+
<variablelist>
24+
<varlistentry>
25+
<term><parameter>num</parameter></term>
26+
<listitem>
27+
<simpara>
28+
The value to be compared to.
29+
</simpara>
30+
</listitem>
31+
</varlistentry>
32+
<!-- scale parameter -->
33+
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('function.bccomp')/db:refsect1[@role='parameters']/descendant::db:varlistentry[3])" />
34+
</variablelist>
35+
</refsect1>
36+
37+
<refsect1 role="returnvalues">
38+
&reftitle.returnvalues;
39+
<simpara>
40+
Returns <literal>0</literal> if the two numbers are equal, <literal>1</literal> if the
41+
this object is larger than the <parameter>num</parameter>, <literal>-1</literal> otherwise.
42+
</simpara>
43+
</refsect1>
44+
45+
<!-- error -->
46+
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('bcmath-number.add')/db:refsect1[@role='errors'])" />
47+
48+
<refsect1 role="examples">
49+
&reftitle.examples;
50+
<example>
51+
<title><methodname>BcMath\Number::compare</methodname> example when <parameter>scale</parameter> is not specified</title>
52+
<programlisting role="php">
53+
<![CDATA[
54+
<?php
55+
$number = new BcMath\Number('1.234');
56+
57+
var_dump(
58+
$number->compare(new BcMath\Number('1.234')),
59+
$number->compare('1.23400'),
60+
$number->compare('1.23401'),
61+
$number->compare(1),
62+
);
63+
?>
64+
]]>
65+
</programlisting>
66+
&example.outputs;
67+
<screen>
68+
<![CDATA[
69+
int(0)
70+
int(0)
71+
int(-1)
72+
int(1)
73+
]]>
74+
</screen>
75+
</example>
76+
77+
<example>
78+
<title><methodname>BcMath\Number::compare</methodname> example of explicitly specifying <parameter>scale</parameter></title>
79+
<programlisting role="php">
80+
<![CDATA[
81+
<?php
82+
$number = new BcMath\Number('1.234');
83+
84+
var_dump(
85+
$number->compare(new BcMath\Number('1.299'), 1),
86+
$number->compare('1.24', 2),
87+
$number->compare('1.22', 2),
88+
$number->compare(1, 0),
89+
);
90+
?>
91+
]]>
92+
</programlisting>
93+
&example.outputs;
94+
<screen>
95+
<![CDATA[
96+
int(0)
97+
int(-1)
98+
int(1)
99+
int(0)
100+
]]>
101+
</screen>
102+
</example>
103+
</refsect1>
104+
105+
<refsect1 role="bc.operatoroverload">
106+
<!-- operator overload title -->
107+
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('bcmath-number.add')/db:refsect1[@role='bc.operatoroverload']/db:title)" />
108+
<simpara>
109+
<classname>BcMath\Number</classname> can perform comparison using operators. The comparison with
110+
the operator behaves the same as when the method argument <parameter>scale</parameter> is &null;.
111+
</simpara>
112+
<example>
113+
<title>Example of comparison using operators</title>
114+
<programlisting role="php">
115+
<![CDATA[
116+
<?php
117+
$number = new BcMath\Number('1.234');
118+
119+
echo 'case "=="' . PHP_EOL;
120+
var_dump(
121+
$number == new BcMath\Number('1.234'),
122+
$number == '1.23400',
123+
$number == '1.23401',
124+
$number == 1,
125+
);
126+
127+
echo PHP_EOL . 'case ">="' . PHP_EOL;
128+
var_dump(
129+
$number >= new BcMath\Number('1.234'),
130+
$number >= '1.23400',
131+
$number >= '1.23401',
132+
$number >= 1,
133+
);
134+
135+
echo PHP_EOL . 'case ">"' . PHP_EOL;
136+
var_dump(
137+
$number > new BcMath\Number('1.234'),
138+
$number > '1.23400',
139+
$number > '1.23401',
140+
$number > 1,
141+
);
142+
143+
echo PHP_EOL . 'case "<="' . PHP_EOL;
144+
var_dump(
145+
$number <= new BcMath\Number('1.234'),
146+
$number <= '1.23400',
147+
$number <= '1.23401',
148+
$number <= 1,
149+
);
150+
151+
echo PHP_EOL . 'case "<"' . PHP_EOL;
152+
var_dump(
153+
$number < new BcMath\Number('1.234'),
154+
$number < '1.23400',
155+
$number < '1.23401',
156+
$number < 1,
157+
);
158+
?>
159+
]]>
160+
</programlisting>
161+
&example.outputs;
162+
<screen>
163+
<![CDATA[
164+
case "=="
165+
bool(true)
166+
bool(true)
167+
bool(false)
168+
bool(false)
169+
170+
case ">="
171+
bool(true)
172+
bool(true)
173+
bool(false)
174+
bool(true)
175+
176+
case ">"
177+
bool(false)
178+
bool(false)
179+
bool(false)
180+
bool(true)
181+
182+
case "<="
183+
bool(true)
184+
bool(true)
185+
bool(true)
186+
bool(false)
187+
188+
case "<"
189+
bool(false)
190+
bool(false)
191+
bool(true)
192+
bool(false)
193+
]]>
194+
</screen>
195+
</example>
196+
</refsect1>
197+
198+
<refsect1 role="seealso">
199+
&reftitle.seealso;
200+
<simplelist>
201+
<member><function>bccomp</function></member>
202+
</simplelist>
203+
</refsect1>
204+
205+
</refentry>
206+
<!-- Keep this comment at the end of the file
207+
Local variables:
208+
mode: sgml
209+
sgml-omittag:t
210+
sgml-shorttag:t
211+
sgml-minimize-attributes:nil
212+
sgml-always-quote-attributes:t
213+
sgml-indent-step:1
214+
sgml-indent-data:t
215+
indent-tabs-mode:nil
216+
sgml-parent-document:nil
217+
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
218+
sgml-exposed-tags:nil
219+
sgml-local-catalogs:nil
220+
sgml-local-ecat-files:nil
221+
End:
222+
vim600: syn=xml fen fdm=syntax fdl=2 si
223+
vim: et tw=78 syn=sgml
224+
vi: ts=1 sw=1
225+
-->

reference/bc/functions/bccomp.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,13 @@ echo bccomp('1.00001', '1', 5); // 1
103103
</programlisting>
104104
</example>
105105
</refsect1>
106+
107+
<refsect1 role="seealso">
108+
&reftitle.seealso;
109+
<simplelist>
110+
<member><methodname>BcMath\Number::compare</methodname></member>
111+
</simplelist>
112+
</refsect1>
106113
</refentry>
107114
<!-- Keep this comment at the end of the file
108115
Local variables:

0 commit comments

Comments
 (0)