-
Notifications
You must be signed in to change notification settings - Fork 7
/
round.xml
319 lines (308 loc) · 9 KB
/
round.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d494ffa4d9f83b60fe66972ec2c0cf0301513b4a Maintainer: pastore Status: ready -->
<!-- CREDITS: cortesi -->
<refentry xml:id="function.round" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>round</refname>
<refpurpose>Arrotonda un float</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>float</type><methodname>round</methodname>
<methodparam><type>float</type><parameter>val</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>precision</parameter><initializer>0</initializer></methodparam>
<methodparam choice="opt"><type>int</type><parameter>mode</parameter><initializer>PHP_ROUND_HALF_UP</initializer></methodparam>
</methodsynopsis>
<para>
Restituisce il valore arrotondato di <parameter>val</parameter> con
la <parameter>precision</parameter> specificata
(numero di cifre dopo il punto decimale).
<parameter>precision</parameter> può anche essere negativa o zero (valore predefinito).
</para>
<!-- Non è vero
<para>
<caution>
<simpara>
Quando si arrotondano le metà esatte, <function>round</function> arrotonda per difetto sui
pari e per eccesso sui dispari. Se si vuole forzare sempre in una direzione
su un .5 (o .05 nel proprio caso) aggiungere o sottrarre un piccolo fattore fuzz. Il
motivo per arrotondare metà dei valori per difetto e l'altra metà per eccesso è
evitare il classico problema bancario in cui, se si arrotondasse sempre per difetto,
si ruberebbe denaro ai propri clienti, o se si arrotondasse
sempre per eccesso si finirebbe per perdere denaro col tempo. Calcolando la media
tra pari e dispari, statisticamente si raggiunge il pareggio.
</simpara>
</caution>
</para>
-->
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>val</parameter></term>
<listitem>
<para>
Il valore da arrotondare.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>precision</parameter></term>
<listitem>
<para>
Il numero facoltativo di cifre decimali a cui arrotondare.
</para>
<para>
Se la <parameter>precision</parameter> è positiva, <parameter>val</parameter> viene
arrotondato a <parameter>precision</parameter> cifre significative dopo il punto decimale.
</para>
<para>
Se la <parameter>precision</parameter> è negativa, <parameter>val</parameter> viene
arrotondato a <parameter>precision</parameter> cifre significative prima del punto decimale,
cioè al multiplo più vicino di <literal>pow(10, -precision)</literal>, ad esempio per una
<parameter>precision</parameter> di -1 <parameter>val</parameter> viene arrotondato a decine,
per una <parameter>precision</parameter> di -2 a centinaia, ecc.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>mode</parameter></term>
<listitem>
<para>
Utilizzare una delle seguenti costanti per specificare la modalità in cui si verifica l'arrotondamento.
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Constants;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry><constant>PHP_ROUND_HALF_UP</constant></entry>
<entry>
Arrotonda <parameter>val</parameter> lontano dallo zero quando è a metà strada,
convertendo 1,5 in 2 e -1,5 in -2.
</entry>
</row>
<row>
<entry><constant>PHP_ROUND_HALF_DOWN</constant></entry>
<entry>
Arrotonda <parameter>val</parameter> verso lo zero quando è a metà strada,
convertendo 1.5 in 1 e -1.5 in -1.
</entry>
</row>
<row>
<entry><constant>PHP_ROUND_HALF_EVEN</constant></entry>
<entry>
Arrotonda <parameter>val</parameter> verso il valore pari più vicino quando è a metà strada,
convertendo 1,5 e 2,5 in 2.
</entry>
</row>
<row>
<entry><constant>PHP_ROUND_HALF_ODD</constant></entry>
<entry>
Arrotonda <parameter>val</parameter> verso il valore dispari più vicino quando è a metà strada,
convertendo 1,5 in 1 e e 2,5 in 3.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Il valore arrotondato alla <parameter>precision</parameter> data come &float;.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Esempi di <function>round</function></title>
<programlisting role="php">
<![CDATA[
<?php
var_dump(round(3.4));
var_dump(round(3.5));
var_dump(round(3.6));
var_dump(round(3.6, 0));
var_dump(round(5.045, 2));
var_dump(round(5.055, 2));
var_dump(round(345, -2));
var_dump(round(345, -3));
var_dump(round(678, -2));
var_dump(round(678, -3));
?>
]]>
</programlisting>
&example.outputs;
<screen role="php">
<![CDATA[
float(3)
float(4)
float(4)
float(4)
float(5.05)
float(5.06)
float(300)
float(0)
float(700)
float(1000)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>In che modo <parameter>precision</parameter> influenza un float</title>
<programlisting role="php">
<![CDATA[
<?php
$number = 135.79;
var_dump(round($number, 3));
var_dump(round($number, 2));
var_dump(round($number, 1));
var_dump(round($number, 0));
var_dump(round($number, -1));
var_dump(round($number, -2));
var_dump(round($number, -3));
?>
]]>
</programlisting>
&example.outputs;
<screen role="php">
<![CDATA[
float(135.79)
float(135.79)
float(135.8)
float(136)
float(140)
float(100)
float(0)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Esempi di <parameter>mode</parameter></title>
<programlisting role="php">
<![CDATA[
<?php
echo 'Modalità di arrotondamento con 9.5' . PHP_EOL;
var_dump(round(9.5, 0, PHP_ROUND_HALF_UP));
var_dump(round(9.5, 0, PHP_ROUND_HALF_DOWN));
var_dump(round(9.5, 0, PHP_ROUND_HALF_EVEN));
var_dump(round(9.5, 0, PHP_ROUND_HALF_ODD));
echo PHP_EOL;
echo 'Modalità di arrotondamento con 8.5' . PHP_EOL;
var_dump(round(8.5, 0, PHP_ROUND_HALF_UP));
var_dump(round(8.5, 0, PHP_ROUND_HALF_DOWN));
var_dump(round(8.5, 0, PHP_ROUND_HALF_EVEN));
var_dump(round(8.5, 0, PHP_ROUND_HALF_ODD));
?>
]]>
</programlisting>
&example.outputs;
<screen role="php">
<![CDATA[
Modalità di arrotondamento con 9.5
float(10)
float(9)
float(10)
float(9)
Modalità di arrotondamento con 8.5
float(9)
float(8)
float(8)
float(9)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Esempi di <parameter>mode</parameter> con <parameter>precision</parameter></title>
<programlisting role="php">
<![CDATA[
<?php
echo 'Utilizzo di PHP_ROUND_HALF_UP con 1 cifra decimale di precisione' . PHP_EOL;
var_dump(round( 1.55, 1, PHP_ROUND_HALF_UP));
var_dump(round(-1.55, 1, PHP_ROUND_HALF_UP));
echo PHP_EOL;
echo 'Utilizzo di PHP_ROUND_HALF_DOWN con 1 cifra decimale di precisione' . PHP_EOL;
var_dump(round( 1.55, 1, PHP_ROUND_HALF_DOWN));
var_dump(round(-1.55, 1, PHP_ROUND_HALF_DOWN));
echo PHP_EOL;
echo 'Utilizzo di PHP_ROUND_HALF_EVEN con 1 cifra decimale di precisione' . PHP_EOL;
var_dump(round( 1.55, 1, PHP_ROUND_HALF_EVEN));
var_dump(round(-1.55, 1, PHP_ROUND_HALF_EVEN));
echo PHP_EOL;
echo 'Utilizzo di PHP_ROUND_HALF_ODD con 1 cifra decimale di precisione' . PHP_EOL;
var_dump(round( 1.55, 1, PHP_ROUND_HALF_ODD));
var_dump(round(-1.55, 1, PHP_ROUND_HALF_ODD));
?>
]]>
</programlisting>
&example.outputs;
<screen role="php">
<![CDATA[
Utilizzo di PHP_ROUND_HALF_UP con 1 cifra decimale di precisione
float(1.6)
float(-1.6)
Utilizzo di PHP_ROUND_HALF_DOWN con 1 cifra decimale di precisione
float(1.5)
float(-1.5)
Utilizzo di PHP_ROUND_HALF_EVEN con 1 cifra decimale di precisione
float(1.6)
float(-1.6)
Utilizzo di PHP_ROUND_HALF_ODD con 1 cifra decimale di precisione
float(1.5)
float(-1.5)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>ceil</function></member>
<member><function>floor</function></member>
<member><function>number_format</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->