1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
archived-doc-ru/reference/bc/functions/bcround.xml

307 lines
11 KiB
XML
Raw Permalink 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: c142be811735a5542c8a2e4c4ed2f81e8cc3acc6 Maintainer: sergey Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.bcround" xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude">
<refnamediv>
<refname>bcround</refname>
<refpurpose>Округляет число произвольной точности</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>bcround</methodname>
<methodparam><type>string</type><parameter>num</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>precision</parameter><initializer>0</initializer></methodparam>
<methodparam choice="opt"><type>RoundingMode</type><parameter>mode</parameter><initializer><constant>RoundingMode::HalfAwayFromZero</constant></initializer></methodparam>
</methodsynopsis>
<simpara>
Функция возвращает значение <parameter>num</parameter>, которое округлила
с точностью <parameter>precision</parameter> — количество знаков после десятичной точки.
Параметр <parameter>precision</parameter> принимает также отрицательные значения или ноль — значение по умолчанию.
</simpara>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('function.round')/db:refsect1[@role='parameters']/descendant::db:varlistentry[1])" />
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('function.round')/db:refsect1[@role='parameters']/descendant::db:varlistentry[2])" />
<xi:include xpointer="bcmath-number.round..parameters.mode" />
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
Функциия возвращает числовую строку, которая представляет число <parameter>num</parameter>,
округлённое с заданной точностью.
</simpara>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Функция выбрасывает ошибку <exceptionname>ValueError</exceptionname> в следующих случаях:
<simplelist>
<member>
В аргументе <parameter>num</parameter> передали строку,
которую сформировали неправильно с точки зрения допустимого формата числовых строк в модуле BCMath.
</member>
<member>В аргументе <parameter>mode</parameter> указали недопустимый режим.</member>
</simplelist>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>Пример округления числа произвольной точности функцией <function>bcround</function></title>
<programlisting role="php">
<![CDATA[
<?php
var_dump(bcround('3.4'));
var_dump(bcround('3.5'));
var_dump(bcround('3.6'));
var_dump(bcround('3.6', 0));
var_dump(bcround('5.045', 2));
var_dump(bcround('5.055', 2));
var_dump(bcround('345', -2));
var_dump(bcround('345', -3));
var_dump(bcround('678', -2));
var_dump(bcround('678', -3));
?>
]]>
</programlisting>
&example.outputs;
<screen role="php">
<![CDATA[
string(1) "3"
string(1) "4"
string(1) "4"
string(1) "4"
string(4) "5.05"
string(4) "5.06"
string(3) "300"
string(1) "0"
string(3) "700"
string(4) "1000"
]]>
</screen>
</example>
<example>
<title>
Пример округления числа произвольной точности функцией <function>bcround</function>
с разными значениями точности <parameter>precision</parameter>
</title>
<programlisting role="php">
<![CDATA[
<?php
$number = '123.45';
var_dump(bcround($number, 3));
var_dump(bcround($number, 2));
var_dump(bcround($number, 1));
var_dump(bcround($number, 0));
var_dump(bcround($number, -1));
var_dump(bcround($number, -2));
var_dump(bcround($number, -3));
?>
]]>
</programlisting>
&example.outputs;
<screen role="php">
<![CDATA[
string(7) "123.450"
string(6) "123.45"
string(5) "123.5"
string(3) "123"
string(3) "120"
string(3) "100"
string(1) "0"
]]>
</screen>
</example>
<example>
<title>
Пример округления числа произвольной точности функцией <function>bcround</function>
с в разных режимах <parameter>mode</parameter>
</title>
<programlisting role="php">
<![CDATA[
<?php
echo 'Округление числа 9.5 в разных режимах', PHP_EOL;
var_dump(bcround('9.5', 0, RoundingMode::HalfAwayFromZero));
var_dump(bcround('9.5', 0, RoundingMode::HalfTowardsZero));
var_dump(bcround('9.5', 0, RoundingMode::HalfEven));
var_dump(bcround('9.5', 0, RoundingMode::HalfOdd));
var_dump(bcround('9.5', 0, RoundingMode::TowardsZero));
var_dump(bcround('9.5', 0, RoundingMode::AwayFromZero));
var_dump(bcround('9.5', 0, RoundingMode::NegativeInfinity));
var_dump(bcround('9.5', 0, RoundingMode::PositiveInfinity));
echo PHP_EOL;
echo 'Округление числа 8.5 в разных режимах', PHP_EOL;
var_dump(bcround('8.5', 0, RoundingMode::HalfAwayFromZero));
var_dump(bcround('8.5', 0, RoundingMode::HalfTowardsZero));
var_dump(bcround('8.5', 0, RoundingMode::HalfEven));
var_dump(bcround('8.5', 0, RoundingMode::HalfOdd));
var_dump(bcround('8.5', 0, RoundingMode::TowardsZero));
var_dump(bcround('8.5', 0, RoundingMode::AwayFromZero));
var_dump(bcround('8.5', 0, RoundingMode::NegativeInfinity));
var_dump(bcround('8.5', 0, RoundingMode::PositiveInfinity));
?>
]]>
</programlisting>
&example.outputs;
<screen role="php">
<![CDATA[
Округление числа 9.5 в разных режимах
string(2) "10"
string(1) "9"
string(2) "10"
string(1) "9"
string(1) "9"
string(2) "10"
string(1) "9"
string(2) "10"
Округление числа 8.5 в разных режимах
string(1) "9"
string(1) "8"
string(1) "8"
string(1) "9"
string(1) "8"
string(1) "9"
string(1) "8"
string(1) "9"
]]>
</screen>
</example>
<example>
<title>
Пример округления числа произвольной точности функцией <function>bcround</function>
в разных режимах <parameter>mode</parameter>
до точности <parameter>precision</parameter>
</title>
<programlisting role="php">
<![CDATA[
<?php
echo 'Режим округления RoundingMode::HalfAwayFromZero с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfAwayFromZero));
var_dump(bcround(-1.55, 1, RoundingMode::HalfAwayFromZero));
echo PHP_EOL;
echo 'Режим округления RoundingMode::HalfTowardsZero с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfTowardsZero));
var_dump(bcround(-1.55, 1, RoundingMode::HalfTowardsZero));
echo PHP_EOL;
echo 'Режим округления RoundingMode::HalfEven с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfEven));
var_dump(bcround(-1.55, 1, RoundingMode::HalfEven));
echo PHP_EOL;
echo 'Режим округления RoundingMode::HalfOdd с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfOdd));
var_dump(bcround(-1.55, 1, RoundingMode::HalfOdd));
echo PHP_EOL;
echo 'Режим округления RoundingMode::TowardsZero с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::TowardsZero));
var_dump(bcround(-1.55, 1, RoundingMode::TowardsZero));
echo PHP_EOL;
echo 'Режим округления RoundingMode::AwayFromZero с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::AwayFromZero));
var_dump(bcround(-1.55, 1, RoundingMode::AwayFromZero));
echo PHP_EOL;
echo 'Режим округления RoundingMode::NegativeInfinity с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::NegativeInfinity));
var_dump(bcround(-1.55, 1, RoundingMode::NegativeInfinity));
echo PHP_EOL;
echo 'Режим округления RoundingMode::PositiveInfinity с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::PositiveInfinity));
var_dump(bcround(-1.55, 1, RoundingMode::PositiveInfinity));
?>
]]>
</programlisting>
&example.outputs;
<screen role="php">
<![CDATA[
Режим округления RoundingMode::HalfAwayFromZero с точностью до 1 десятичного знака
string(3) "1.6"
string(4) "-1.6"
Режим округления RoundingMode::HalfTowardsZero с точностью до 1 десятичного знака
string(3) "1.5"
string(4) "-1.5"
Режим округления RoundingMode::HalfEven с точностью до 1 десятичного знака
string(3) "1.6"
string(4) "-1.6"
Режим округления RoundingMode::HalfOdd с точностью до 1 десятичного знака
string(3) "1.5"
string(4) "-1.5"
Режим округления RoundingMode::TowardsZero с точностью до 1 десятичного знака
string(3) "1.5"
string(4) "-1.5"
Режим округления RoundingMode::AwayFromZero с точностью до 1 десятичного знака
string(3) "1.6"
string(4) "-1.6"
Режим округления RoundingMode::NegativeInfinity с точностью до 1 десятичного знака
string(3) "1.5"
string(4) "-1.6"
Режим округления RoundingMode::PositiveInfinity с точностью до 1 десятичного знака
string(3) "1.6"
string(4) "-1.5"
]]>
</screen>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>bcceil</function></member>
<member><function>bcfloor</function></member>
<member><methodname>BcMath\Number::round</methodname></member>
</simplelist>
</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
-->