1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-25 16:22:18 +01:00
Files
archived-doc-ru/reference/math/functions/round.xml
2024-01-22 11:10:26 +03:00

352 lines
12 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 6406cc6c50f8f66f7d55f550dc1ec2759e2eca0f Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.round" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>round</refname>
<refpurpose>Округляет число с плавающей точкой (float)</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>float</type><methodname>round</methodname>
<methodparam><type class="union"><type>int</type><type>float</type></type><parameter>num</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><constant>PHP_ROUND_HALF_UP</constant></initializer></methodparam>
</methodsynopsis>
<para>
Возвращает округлённое значение числа <parameter>num</parameter> с точностью,
указанной в параметре <parameter>precision</parameter>
(количество цифр после запятой).
Значение точности <parameter>precision</parameter> разрешено задавать отрицательным значением или нулём (по умолчанию).
</para>
<!-- It's not true
<para>
<caution>
<simpara>
При среднем значении <function>round</function> округляет в меньшую сторону чётные числа
и в большую - нечётные. Если необходимо всегда округлять в какую-либо одну сторону
на .5 (или .05 как в примере), следует указать параметр <parameter>mode</parameter>.
Причиной различного округления чётных и нечётных чисел является попытка
избежать классической проблемы банка, согласно которой, при постоянном округлении
в меньшую сторону банк крадёт деньги клиента, а при постоянном округлении
в большую сторону банк со временем разорится. Данная реализация округления
чётных и нечётных чисел равнозначна статистической безубыточности.
</simpara>
</caution>
</para>
-->
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>num</parameter></term>
<listitem>
<para>
Значение для округления.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>precision</parameter></term>
<listitem>
<para>
Необязательное количество десятичных знаков, до которых будет округлено число.
</para>
<para>
Если точность <parameter>precision</parameter> положительная, число <parameter>num</parameter>
округляется до точности <parameter>precision</parameter> значащих цифр после десятичной точки.
</para>
<para>
Если точность <parameter>precision</parameter> отрицательная, число <parameter>num</parameter>
округляется до точности <parameter>precision</parameter> значащих цифр перед десятичной точкой,
то есть до следующего кратного результата выражения <code>pow(10, -$precision)</code>,
например, для точности <parameter>precision</parameter>, равной -1, число <parameter>num</parameter> округляется до десятков,
для точности <parameter>precision</parameter>, равной -2, — до сотен и т. д.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>mode</parameter></term>
<listitem>
<para>
Чтобы задать режим округления, указывают одну из следующих констант:
<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>
Округляет положительное число <parameter>num</parameter> в бо́льшую сторону, а отрицательное в меньшую,
превращая 1.5 в 2 и -1.5 в -2 (стремится от нуля).
</entry>
</row>
<row>
<entry><constant>PHP_ROUND_HALF_DOWN</constant></entry>
<entry>
Округляет положительное число <parameter>num</parameter> в меньшую сторону, а отрицательное в бо́льшую,
превращая 1.5 в 1 и -1.5 в -1 (стремится к нулю).
</entry>
</row>
<row>
<entry><constant>PHP_ROUND_HALF_EVEN</constant></entry>
<entry>
Округляет число <parameter>num</parameter> до ближайшего чётного значения,
превращая 1.5 и 2.5 в 2.
</entry>
</row>
<row>
<entry><constant>PHP_ROUND_HALF_ODD</constant></entry>
<entry>
Округляет число <parameter>num</parameter> до ближайшего нечётного значения,
превращая 1.5 в 1 и 2.5 в 3.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает в виде числа с плавающей точкой (&float;) значение,
округлённое до заданной параметром <parameter>precision</parameter> точности.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
Параметр <parameter>num</parameter> больше не принимает внутренние объекты,
поддерживающие числовое преобразование.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования функции <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>Как параметр <parameter>precision</parameter> влияет на числа с плавающей точкой</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>Примеры использования параметра <parameter>mode</parameter></title>
<programlisting role="php">
<![CDATA[
<?php
echo 'Режимы округления с 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 'Режимы округления с 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[
Режимы округления с 9.5
float(10)
float(9)
float(10)
float(9)
Режимы округления с 8.5
float(9)
float(8)
float(8)
float(9)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Примеры использования параметра <parameter>mode</parameter> с указанием точности <parameter>precision</parameter></title>
<programlisting role="php">
<![CDATA[
<?php
echo 'Округление с точностью до 1 знака с константой PHP_ROUND_HALF_UP в качестве значения режима округления' . 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 'Округление с точностью до 1 знака с константой PHP_ROUND_HALF_DOWN в качестве значения режима округления' . 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 'Округление с точностью до 1 знака с константой PHP_ROUND_HALF_EVEN в качестве значения режима округления' . 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 'Округление с точностью до 1 знака с константой PHP_ROUND_HALF_ODD в качестве значения режима округления' . 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[
Округление с точностью до 1 знака с константой PHP_ROUND_HALF_UP в качестве значения режима округления
float(1.6)
float(-1.6)
Округление с точностью до 1 знака с константой PHP_ROUND_HALF_DOWN в качестве значения режима округления
float(1.5)
float(-1.5)
Округление с точностью до 1 знака с константой PHP_ROUND_HALF_EVEN в качестве значения режима округления
float(1.6)
float(-1.6)
Округление с точностью до 1 знака с константой PHP_ROUND_HALF_ODD в качестве значения режима округления
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
-->