(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
NumberFormatter::setAttribute -- numfmt_set_attribute — Устанавливает значение для атрибута форматирования чисел
Объектно-ориентированный стиль
Процедурный стиль
Функция устанавливает значение для атрибута форматирования чисел. Пример атрибута числового формата — количество разрядов в целой части числа, которое выведет средство форматирования.
formatterОбъект NumberFormatter.
attributeСпецификатор атрибута — константа атрибута форматирования чисел.
valueЗначение для атрибута.
Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.
Пример #1 Пример форматирования чисел функцией numfmt_set_attribute()
<?php
$fmt = numfmt_create('de_DE', NumberFormatter::DECIMAL);
echo "Количество разрядов в дробной части числа: " . numfmt_get_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS) . "\n";
echo numfmt_format($fmt, 1234567.891234567890000) . "\n";
numfmt_set_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS, 2);
echo "Количество разрядов в дробной части числа: " . numfmt_get_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS) . "\n";
echo numfmt_format($fmt, 1234567.891234567890000) . "\n";Пример #2 Пример форматирования чисел в объектно-ориентированном стиле
<?php
$fmt = new NumberFormatter('de_DE', NumberFormatter::DECIMAL);
echo "Количество разрядов в дробной части числа: " . $fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS) . "\n";
echo $fmt->format(1234567.891234567890000) . "\n";
$fmt->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 2);
echo "Количество разрядов в дробной части числа: " . $fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS) . "\n";
echo $fmt->format(1234567.891234567890000) . "\n";Результат выполнения приведённого примера:
Количество разрядов в дробной части числа: 3 1.234.567,891 Количество разрядов в дробной части числа: 2 1.234.567,89
Пример #3 Пример усечения значений атрибутом NumberFormatter::ROUNDING_MODE
По умолчанию объект NumberFormatter округляет значения.
В режиме NumberFormatter::ROUND_DOWN
для атрибута NumberFormatter::ROUNDING_MODE функция усекает
значение до заданного количества дробных разрядов без округления.
<?php
$fmt = new NumberFormatter('en_US', NumberFormatter::DECIMAL);
$fmt->setAttribute(NumberFormatter::FRACTION_DIGITS, 2);
echo "Округление в режиме по умолчанию:\n";
echo $fmt->format(3.789), "\n"; // 3.79 — результат округления вверх
echo $fmt->format(3.781), "\n"; // 3.78 — результат округления вниз
$fmt->setAttribute(NumberFormatter::ROUNDING_MODE, NumberFormatter::ROUND_DOWN);
echo "\nУсечение в режиме ROUND_DOWN:\n";
echo $fmt->format(3.789), "\n"; // 3.78 — результат усечения
echo $fmt->format(3.781), "\n"; // 3.78 — результат усеченияРезультат выполнения приведённого примера:
Округление в режиме по умолчанию: 3.79 3.78 Усечение в режиме ROUND_DOWN: 3.78 3.78