J'utilise la classe PHP NumberFormatter pour imprimer les valeurs monétaires.Comment obtenir NumberFormatter pour imprimer des valeurs de devise négative avec un signe moins?
Par exemple:
$cFormatter = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
$cFormatter->formatCurrency(123, 'USD');
$cFormatter->formatCurrency(123, 'BRL');
$cFormatter->formatCurrency(123, 'GBP');
Cela fonctionne très bien, et retourne "$123.00
""R$123.00
", "£123.00
"respectivement comme prévu
Mais les nombres négatifs sont imprimés. "Style comptabilité", entouré par des crochets, au lieu . d'un leader moins "-"
par exemple:
$cFormatter->formatCurrency(-456, 'USD');
Renvoie "($456.00)"
, alors que je veux "-$456.00"
. Sûrement il y a une manière simple de faire ceci?
Je peux supprimer les crochets par override le préfixe et postfix comme suit:
$cFormatter->setTextAttribute(NumberFormatter::NEGATIVE_PREFIX, "-");
$cFormatter->setTextAttribute(NumberFormatter::NEGATIVE_SUFFIX, "");
Mais je n'obtenir le symbole monétaire par exemple "-456.00"
.
Existe-t-il un code d'échappement pour le symbole de devise que j'ai besoin d'utiliser lors de la définition de l'attribut NEGATIVE_PREFIX?
Editer: Je suis heureux de définir un paramètre régional différent si cela me donne le résultat que je recherche.
Edit 2: En regardant le Intl library docs (qui est la bibliothèque utilisée pour mettre en œuvre NumberFormatter), ce qui suit semblait prometteur:
¤ (\ u00A4): le préfixe ou le suffixe: Aucun signe de devises, remplacé par symbole monétaire Si doublé, remplacé par le symbole monétaire international. Si triplé, remplacé par plusieurs noms de devise, par exemple, "dollar américain" ou "dollars américains" pour l'Amérique. S'il est présent dans un modèle, le séparateur décimal monétaire est utilisé à la place du séparateur décimal.
Mais ceci:
$cFormatter->setTextAttribute(NumberFormatter::NEGATIVE_PREFIX, "-¤");
écrit seulement "-¤123", donc pas de joie.
Édition 3: Je pense avoir trouvé la réponse, voir ci-dessous.
therefromhere: À la lumière de « Je suis heureux de mettre un lieu différent si cela donne mon résultat est ce que je cherche. " Veuillez voir ma réponse mise à jour: utilisez en_AU. – hobodave