どうやっていけばいいですか?numberにはnumberformatterを印刷負の通貨価値はマイナス記号を付け?

StackOverflow https://stackoverflow.com/questions/1160860

質問

を使用しているPHP Numberにはnumberformatter クラスに印刷通貨の値です。

例:

  $cFormatter = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
  $cFormatter->formatCurrency(123, 'USD');
  $cFormatter->formatCurrency(123, 'BRL');
  $cFormatter->formatCurrency(123, 'GBP');

このオプションを返します "$123.00", "R$123.00", "£123.00"それぞれています。

が負の数字は"会計スタイル"に囲まれたブラケットではなく、頭にマイナス"-".

例:

$cFormatter->formatCurrency(-456, 'USD');

を返します "($456.00)", はい "-$456.00".確かに簡単にわかる方法?

私は取り外し可能なブラケットによるオーバーライドの接頭辞やpostfixとして

$cFormatter->setTextAttribute(NumberFormatter::NEGATIVE_PREFIX, "-");
$cFormatter->setTextAttribute(NumberFormatter::NEGATIVE_SUFFIX, "");

もしませんの通貨記号の例 "-456.00".

あの脱出のためのコードの通貨記号による設定したい場合はNEGATIVE_PREFIX属性?

編集: 嬉しいセットを異なるロケールの場合、この結果もやってみたいです。

編集2: を見る 国際図書館docs の図書館を実装するのに使われているのnumberにはnumberformatterに見:

¤(\u00A4):接頭辞や接尾辞:ない通貨記号で置換される通貨シンボルです。さ倍増で置換される国際通貨シンボルです。さ倍増で置換される通貨に複数の名前を、例えば、"米ドル"または"米ドル"です。存在する場合のパターンは、通貨桁区切り子が使用されているのは、小数点セパレーターが不要になる。

この:

$cFormatter->setTextAttribute(NumberFormatter::NEGATIVE_PREFIX, "-¤");

で印刷"-¤123"な喜びです。

編集3: 私の答えを見つけたのだ、下記を参照してください。

役に立ちましたか?

解決

がその場で発音を確認することが少し少hacky道を曲げロケールがen_USの動きは私が求めていたもの getPattern() / setPattern() ます。

$cFormatter = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
$sPattern = $cFormatter->getPattern(); // returns "¤#,##0.00;(¤#,##0.00)";

$sMyPattern = "¤#,##0.00;-¤#,##0.00";
$cFormatter->setPattern($sMyPattern);
$cFormatter->formatCurrency(-456, 'USD');  // returns -$456.00

他のヒント

のようにしていくのでしょうか。ちょっと荒点の定位ができます。以降、需のドル記号としているパターンであり続けたいと願っての最初の番号ではない各通貨です。除去したい場合は、括弧いうような,

$locale = 'en_US';    
$nf = new \NumberFormatter($locale, \NumberFormatter::CURRENCY); 
$nf->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, $decimals);

$pattern = str_replace(array('(',')'),'',$nf->getPattern());
$nf->setPattern($pattern);

echo $nf->format($number);

単にできる

$cFormatter->setTextAttribute(NumberFormatter::PAD_BEFORE_PREFIX, '-$')."\n";
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top