NumberFormatter::setAttribute

numfmt_set_attribute

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::setAttribute -- numfmt_set_attributeAffecte un attribut du formateur

Description

Style orienté objet

public function NumberFormatter::setAttribute(int $attribute, int|float $value): bool

Style procédural

function numfmt_set_attribute(NumberFormatter $formatter, int $attribute, int|float $value): bool

Affecte un attribut numérique du formateur. Un exemple d'attribut numérique est le nombre de chiffres de la partie entière que le formateur va produire.

Liste de paramètres

formatter

L'objet NumberFormatter.

attribute

L'identifiant d'attribut : une des constantes attributs numériques.

value

La valeur de l'attribut.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Exemples

Exemple #1 Exemple avec numfmt_set_attribute(), Style procédural

<?php
$fmt
= numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
echo
"Digits: ".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
"Digits: ".numfmt_get_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS)."\n";
echo
numfmt_format($fmt, 1234567.891234567890000)."\n";
?>

Exemple #2 Exemple avec numfmt_set_attribute(), style POO

<?php
$fmt
= new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo
"Digits: ".$fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)."\n";
echo
$fmt->format(1234567.891234567890000)."\n";
$fmt->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 2);
echo
"Digits: ".$fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)."\n";
echo
$fmt->format(1234567.891234567890000)."\n";
?>

L'exemple ci-dessus va afficher :

Digits: 3
1.234.567,891
Digits: 2
1.234.567,89

Exemple #3 Utilisation de NumberFormatter::ROUNDING_MODE pour tronquer les valeurs

Par défaut, NumberFormatter arrondit les valeurs. En utilisant NumberFormatter::ROUND_DOWN comme NumberFormatter::ROUNDING_MODE, les valeurs sont tronquées au nombre de chiffres fractionnaires spécifié sans arrondi.

<?php
$fmt
= new NumberFormatter('en_US', NumberFormatter::DECIMAL);
$fmt->setAttribute(NumberFormatter::FRACTION_DIGITS, 2);

echo
"Mode par défaut d'arrondi:\n";
echo
$fmt->format(3.789), "\n"; // 3.79 (arrondi au dessus)
echo $fmt->format(3.781), "\n"; // 3.78 (arrondi en dessous)

$fmt->setAttribute(NumberFormatter::ROUNDING_MODE, NumberFormatter::ROUND_DOWN);

echo
"\nAvec ROUND_DOWN (tronquer):\n";
echo
$fmt->format(3.789), "\n"; // 3.78 (tronqué)
echo $fmt->format(3.781), "\n"; // 3.78 (tronqué)
?>

L'exemple ci-dessus va afficher :

Mode par défaut d'arrondi:
3.79
3.78

Avec ROUND_DOWN (tronquer):
3.78
3.78

Voir aussi