1
1
<?xml version =" 1.0" encoding =" utf-8" ?>
2
2
<!-- $Revision$ -->
3
- <!-- EN-Revision: 1ef2fdddacc294b73c467162d8430e4590291530 Maintainer: hirokawa Status: ready -->
3
+ <!-- EN-Revision: 23482f94b527c729bcbf2c390e33a7379551e915 Maintainer: hirokawa Status: ready -->
4
4
<!-- CREDITS: takagi,mumumu -->
5
5
<refentry xml : id =" function.round" xmlns =" http://docbook.org/ns/docbook" >
6
6
<refnamediv >
68
68
</para >
69
69
<para >
70
70
<parameter >precision</parameter > が正の値の場合、
71
- 丸めは小数点より後ろの桁に対して行われます。
71
+ <parameter >val</parameter > は
72
+ 小数点以下、有効桁数 <parameter >precision</parameter > 桁に丸められます。
72
73
</para >
73
74
<para >
74
75
<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の倍数に近くなるように丸められる、という具合です。
78
82
</para >
79
83
</listitem >
80
84
</varlistentry >
95
99
<row >
96
100
<entry ><constant >PHP_ROUND_HALF_UP</constant ></entry >
97
101
<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 になります。
100
105
</entry >
101
106
</row >
102
107
<row >
103
108
<entry ><constant >PHP_ROUND_HALF_DOWN</constant ></entry >
104
109
<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 になります。
107
113
</entry >
108
114
</row >
109
115
<row >
110
116
<entry ><constant >PHP_ROUND_HALF_EVEN</constant ></entry >
111
117
<entry >
112
- <parameter >val</parameter > が小数点第 <parameter >precision</parameter > 位の値になるように、
113
- もっとも近い偶数に丸めます。
118
+ 端数が半分の場合、
119
+ <parameter >val</parameter > をもっとも近い偶数に丸めます。
120
+ 1.5 や 2.5 は 2 になります。
114
121
</entry >
115
122
</row >
116
123
<row >
117
124
<entry ><constant >PHP_ROUND_HALF_ODD</constant ></entry >
118
125
<entry >
119
- <parameter >val</parameter > が小数点第 <parameter >precision</parameter > 位の値になるように、
120
- もっとも近い奇数に丸めます。
126
+ 端数が半分の場合、
127
+ <parameter >val</parameter > をもっとも近い奇数に丸めます。
128
+ 1.5 は 1 に、そして 2.5 は 3 になります。
121
129
</entry >
122
130
</row >
123
131
</tbody >
@@ -147,10 +155,12 @@ var_dump(round(3.4));
147
155
var_dump(round(3.5));
148
156
var_dump(round(3.6));
149
157
var_dump(round(3.6, 0));
150
- var_dump(round(1.95583, 2));
151
- var_dump(round(1241757, -3));
152
158
var_dump(round(5.045, 2));
153
159
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));
154
164
?>
155
165
]]>
156
166
</programlisting >
@@ -161,10 +171,12 @@ float(3)
161
171
float(4)
162
172
float(4)
163
173
float(4)
164
- float(1.96)
165
- float(1242000)
166
174
float(5.05)
167
175
float(5.06)
176
+ float(300)
177
+ float(0)
178
+ float(700)
179
+ float(1000)
168
180
]]>
169
181
</screen >
170
182
</example >
@@ -175,27 +187,27 @@ float(5.06)
175
187
<programlisting role =" php" >
176
188
<![CDATA[
177
189
<?php
178
- $number = 1346.21 ;
190
+ $number = 135.79 ;
179
191
192
+ var_dump(round($number, 3));
180
193
var_dump(round($number, 2));
181
194
var_dump(round($number, 1));
182
195
var_dump(round($number, 0));
183
196
var_dump(round($number, -1));
184
197
var_dump(round($number, -2));
185
198
var_dump(round($number, -3));
186
- var_dump(round($number, -4));
187
199
?>
188
200
]]>
189
201
</programlisting >
190
202
&example.outputs;
191
203
<screen role =" php" >
192
204
<![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 )
199
211
float(0)
200
212
]]>
201
213
</screen >
@@ -213,6 +225,7 @@ var_dump(round(9.5, 0, PHP_ROUND_HALF_DOWN));
213
225
var_dump(round(9.5, 0, PHP_ROUND_HALF_EVEN));
214
226
var_dump(round(9.5, 0, PHP_ROUND_HALF_ODD));
215
227
228
+ echo PHP_EOL;
216
229
echo 'Rounding modes with 8.5' . PHP_EOL;
217
230
var_dump(round(8.5, 0, PHP_ROUND_HALF_UP));
218
231
var_dump(round(8.5, 0, PHP_ROUND_HALF_DOWN));
@@ -229,6 +242,7 @@ float(10)
229
242
float(9)
230
243
float(10)
231
244
float(9)
245
+
232
246
Rounding modes with 8.5
233
247
float(9)
234
248
float(8)
@@ -246,30 +260,22 @@ float(9)
246
260
<?php
247
261
echo 'Using PHP_ROUND_HALF_UP with 1 decimal digit precision' . PHP_EOL;
248
262
var_dump(round( 1.55, 1, PHP_ROUND_HALF_UP));
249
- var_dump(round( 1.54, 1, PHP_ROUND_HALF_UP));
250
263
var_dump(round(-1.55, 1, PHP_ROUND_HALF_UP));
251
- var_dump(round(-1.54, 1, PHP_ROUND_HALF_UP));
252
264
253
265
echo PHP_EOL;
254
266
echo 'Using PHP_ROUND_HALF_DOWN with 1 decimal digit precision' . PHP_EOL;
255
267
var_dump(round( 1.55, 1, PHP_ROUND_HALF_DOWN));
256
- var_dump(round( 1.54, 1, PHP_ROUND_HALF_DOWN));
257
268
var_dump(round(-1.55, 1, PHP_ROUND_HALF_DOWN));
258
- var_dump(round(-1.54, 1, PHP_ROUND_HALF_DOWN));
259
269
260
270
echo PHP_EOL;
261
271
echo 'Using PHP_ROUND_HALF_EVEN with 1 decimal digit precision' . PHP_EOL;
262
272
var_dump(round( 1.55, 1, PHP_ROUND_HALF_EVEN));
263
- var_dump(round( 1.54, 1, PHP_ROUND_HALF_EVEN));
264
273
var_dump(round(-1.55, 1, PHP_ROUND_HALF_EVEN));
265
- var_dump(round(-1.54, 1, PHP_ROUND_HALF_EVEN));
266
274
267
275
echo PHP_EOL;
268
276
echo 'Using PHP_ROUND_HALF_ODD with 1 decimal digit precision' . PHP_EOL;
269
277
var_dump(round( 1.55, 1, PHP_ROUND_HALF_ODD));
270
- var_dump(round( 1.54, 1, PHP_ROUND_HALF_ODD));
271
278
var_dump(round(-1.55, 1, PHP_ROUND_HALF_ODD));
272
- var_dump(round(-1.54, 1, PHP_ROUND_HALF_ODD));
273
279
?>
274
280
]]>
275
281
</programlisting >
@@ -278,26 +284,18 @@ var_dump(round(-1.54, 1, PHP_ROUND_HALF_ODD));
278
284
<![CDATA[
279
285
Using PHP_ROUND_HALF_UP with 1 decimal digit precision
280
286
float(1.6)
281
- float(1.5)
282
287
float(-1.6)
283
- float(-1.5)
284
288
285
289
Using PHP_ROUND_HALF_DOWN with 1 decimal digit precision
286
290
float(1.5)
287
- float(1.5)
288
- float(-1.5)
289
291
float(-1.5)
290
292
291
293
Using PHP_ROUND_HALF_EVEN with 1 decimal digit precision
292
294
float(1.6)
293
- float(1.5)
294
295
float(-1.6)
295
- float(-1.5)
296
296
297
297
Using PHP_ROUND_HALF_ODD with 1 decimal digit precision
298
298
float(1.5)
299
- float(1.5)
300
- float(-1.5)
301
299
float(-1.5)
302
300
]]>
303
301
</screen >
0 commit comments