Skip to content

Commit a4489c1

Browse files
author
Yoshinari Takaoka
committed
Improve docs of round()
git-svn-id: https://svn.php.net/repository/phpdoc/ja/trunk@350531 c90b9560-bf6c-de11-be94-00142212c4b1
1 parent de17c45 commit a4489c1

File tree

1 file changed

+39
-41
lines changed

1 file changed

+39
-41
lines changed

reference/math/functions/round.xml

Lines changed: 39 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: 1ef2fdddacc294b73c467162d8430e4590291530 Maintainer: hirokawa Status: ready -->
3+
<!-- EN-Revision: 23482f94b527c729bcbf2c390e33a7379551e915 Maintainer: hirokawa Status: ready -->
44
<!-- CREDITS: takagi,mumumu -->
55
<refentry xml:id="function.round" xmlns="http://docbook.org/ns/docbook">
66
<refnamediv>
@@ -68,13 +68,17 @@
6868
</para>
6969
<para>
7070
<parameter>precision</parameter> が正の値の場合、
71-
丸めは小数点より後ろの桁に対して行われます。
71+
<parameter>val</parameter> は
72+
小数点以下、有効桁数 <parameter>precision</parameter> 桁に丸められます。
7273
</para>
7374
<para>
7475
<parameter>precision</parameter> が負の場合、
75-
丸め処理は小数点より前の桁に対して行われます。
76-
<parameter>precision</parameter> の絶対値が
77-
桁数以上の場合は、丸めの結果は <literal>0</literal> になります。
76+
<parameter>val</parameter> の
77+
丸め処理は小数点より前の <parameter>precision</parameter> 桁に対して行われます。
78+
つまり、<literal>pow(10, -precision)</literal> の倍数に一番近い値に丸められます。
79+
たとえば、<parameter>precision</parameter> が -1 の場合、
80+
<parameter>val</parameter> は 10の倍数、
81+
<parameter>precision</parameter> が -2 の場合は 100の倍数に近くなるように丸められる、という具合です。
7882
</para>
7983
</listitem>
8084
</varlistentry>
@@ -95,29 +99,33 @@
9599
<row>
96100
<entry><constant>PHP_ROUND_HALF_UP</constant></entry>
97101
<entry>
98-
<parameter>val</parameter> が小数点第 <parameter>precision</parameter> 位の値になるように、
99-
ゼロから離れる方向に丸めます。1.5 は 2 に、そして -1.5 は -2 になります。
102+
端数が半分の場合、
103+
<parameter>val</parameter> をゼロから離れる方向に丸めます。
104+
1.5 は 2 に、そして -1.5 は -2 になります。
100105
</entry>
101106
</row>
102107
<row>
103108
<entry><constant>PHP_ROUND_HALF_DOWN</constant></entry>
104109
<entry>
105-
<parameter>val</parameter> が小数点第 <parameter>precision</parameter> 位の値になるように、
106-
ゼロに近づく方向に丸めます。1.5 は 1 に、そして -1.5 は -1 になります。
110+
端数が半分の場合、
111+
<parameter>val</parameter> をゼロに近づく方向に丸めます。
112+
1.5 は 1 に、そして -1.5 は -1 になります。
107113
</entry>
108114
</row>
109115
<row>
110116
<entry><constant>PHP_ROUND_HALF_EVEN</constant></entry>
111117
<entry>
112-
<parameter>val</parameter> が小数点第 <parameter>precision</parameter> 位の値になるように、
113-
もっとも近い偶数に丸めます。
118+
端数が半分の場合、
119+
<parameter>val</parameter> をもっとも近い偶数に丸めます。
120+
1.5 や 2.5 は 2 になります。
114121
</entry>
115122
</row>
116123
<row>
117124
<entry><constant>PHP_ROUND_HALF_ODD</constant></entry>
118125
<entry>
119-
<parameter>val</parameter> が小数点第 <parameter>precision</parameter> 位の値になるように、
120-
もっとも近い奇数に丸めます。
126+
端数が半分の場合、
127+
<parameter>val</parameter> をもっとも近い奇数に丸めます。
128+
1.5 は 1 に、そして 2.5 は 3 になります。
121129
</entry>
122130
</row>
123131
</tbody>
@@ -147,10 +155,12 @@ var_dump(round(3.4));
147155
var_dump(round(3.5));
148156
var_dump(round(3.6));
149157
var_dump(round(3.6, 0));
150-
var_dump(round(1.95583, 2));
151-
var_dump(round(1241757, -3));
152158
var_dump(round(5.045, 2));
153159
var_dump(round(5.055, 2));
160+
var_dump(round(345, -2));
161+
var_dump(round(345, -3));
162+
var_dump(round(678, -2));
163+
var_dump(round(678, -3));
154164
?>
155165
]]>
156166
</programlisting>
@@ -161,10 +171,12 @@ float(3)
161171
float(4)
162172
float(4)
163173
float(4)
164-
float(1.96)
165-
float(1242000)
166174
float(5.05)
167175
float(5.06)
176+
float(300)
177+
float(0)
178+
float(700)
179+
float(1000)
168180
]]>
169181
</screen>
170182
</example>
@@ -175,27 +187,27 @@ float(5.06)
175187
<programlisting role="php">
176188
<![CDATA[
177189
<?php
178-
$number = 1346.21;
190+
$number = 135.79;
179191
192+
var_dump(round($number, 3));
180193
var_dump(round($number, 2));
181194
var_dump(round($number, 1));
182195
var_dump(round($number, 0));
183196
var_dump(round($number, -1));
184197
var_dump(round($number, -2));
185198
var_dump(round($number, -3));
186-
var_dump(round($number, -4));
187199
?>
188200
]]>
189201
</programlisting>
190202
&example.outputs;
191203
<screen role="php">
192204
<![CDATA[
193-
float(1346.21)
194-
float(1346.2)
195-
float(1346)
196-
float(1350)
197-
float(1300)
198-
float(1000)
205+
float(135.79)
206+
float(135.79)
207+
float(135.8)
208+
float(136)
209+
float(140)
210+
float(100)
199211
float(0)
200212
]]>
201213
</screen>
@@ -213,6 +225,7 @@ var_dump(round(9.5, 0, PHP_ROUND_HALF_DOWN));
213225
var_dump(round(9.5, 0, PHP_ROUND_HALF_EVEN));
214226
var_dump(round(9.5, 0, PHP_ROUND_HALF_ODD));
215227
228+
echo PHP_EOL;
216229
echo 'Rounding modes with 8.5' . PHP_EOL;
217230
var_dump(round(8.5, 0, PHP_ROUND_HALF_UP));
218231
var_dump(round(8.5, 0, PHP_ROUND_HALF_DOWN));
@@ -229,6 +242,7 @@ float(10)
229242
float(9)
230243
float(10)
231244
float(9)
245+
232246
Rounding modes with 8.5
233247
float(9)
234248
float(8)
@@ -246,30 +260,22 @@ float(9)
246260
<?php
247261
echo 'Using PHP_ROUND_HALF_UP with 1 decimal digit precision' . PHP_EOL;
248262
var_dump(round( 1.55, 1, PHP_ROUND_HALF_UP));
249-
var_dump(round( 1.54, 1, PHP_ROUND_HALF_UP));
250263
var_dump(round(-1.55, 1, PHP_ROUND_HALF_UP));
251-
var_dump(round(-1.54, 1, PHP_ROUND_HALF_UP));
252264
253265
echo PHP_EOL;
254266
echo 'Using PHP_ROUND_HALF_DOWN with 1 decimal digit precision' . PHP_EOL;
255267
var_dump(round( 1.55, 1, PHP_ROUND_HALF_DOWN));
256-
var_dump(round( 1.54, 1, PHP_ROUND_HALF_DOWN));
257268
var_dump(round(-1.55, 1, PHP_ROUND_HALF_DOWN));
258-
var_dump(round(-1.54, 1, PHP_ROUND_HALF_DOWN));
259269
260270
echo PHP_EOL;
261271
echo 'Using PHP_ROUND_HALF_EVEN with 1 decimal digit precision' . PHP_EOL;
262272
var_dump(round( 1.55, 1, PHP_ROUND_HALF_EVEN));
263-
var_dump(round( 1.54, 1, PHP_ROUND_HALF_EVEN));
264273
var_dump(round(-1.55, 1, PHP_ROUND_HALF_EVEN));
265-
var_dump(round(-1.54, 1, PHP_ROUND_HALF_EVEN));
266274
267275
echo PHP_EOL;
268276
echo 'Using PHP_ROUND_HALF_ODD with 1 decimal digit precision' . PHP_EOL;
269277
var_dump(round( 1.55, 1, PHP_ROUND_HALF_ODD));
270-
var_dump(round( 1.54, 1, PHP_ROUND_HALF_ODD));
271278
var_dump(round(-1.55, 1, PHP_ROUND_HALF_ODD));
272-
var_dump(round(-1.54, 1, PHP_ROUND_HALF_ODD));
273279
?>
274280
]]>
275281
</programlisting>
@@ -278,26 +284,18 @@ var_dump(round(-1.54, 1, PHP_ROUND_HALF_ODD));
278284
<![CDATA[
279285
Using PHP_ROUND_HALF_UP with 1 decimal digit precision
280286
float(1.6)
281-
float(1.5)
282287
float(-1.6)
283-
float(-1.5)
284288
285289
Using PHP_ROUND_HALF_DOWN with 1 decimal digit precision
286290
float(1.5)
287-
float(1.5)
288-
float(-1.5)
289291
float(-1.5)
290292
291293
Using PHP_ROUND_HALF_EVEN with 1 decimal digit precision
292294
float(1.6)
293-
float(1.5)
294295
float(-1.6)
295-
float(-1.5)
296296
297297
Using PHP_ROUND_HALF_ODD with 1 decimal digit precision
298298
float(1.5)
299-
float(1.5)
300-
float(-1.5)
301299
float(-1.5)
302300
]]>
303301
</screen>

0 commit comments

Comments
 (0)