JSTL リファレンス

<fmt:formatNumber>
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"

SYNOPSIS

<fmt:formatNumber
value="数値"
type="number|currency|percent"
pattern="数値パターン"
currencyCode="通貨コード"
currencySymbol="通貨記号"
groupingUsed="true|false"
maxIntegerDigits="数値"
minIntegerDigits="1|数値"
maxFractionDigits="数値"
minFractionDigits="数値"
var="変数名"
scope="page|request|session|application"
>
value 属性を省略した場合の数値.
</fmt:formatNumber>

説 明

java.text.NumberFormat を用いて数値をフォーマットします。

else や if else が不要であれば <c:if> を使用したほうがすっきり記述できます。 また単純な条件と出力であれば EL の 3 項条件演算子で代用することが出来ます。

属 性

value="数値"
optional

フォーマットする数値を指定します。

この属性の代わりにタグ内部の文字列を数値として使用することも出来ます。 タグ内には条件文なども記述できるため、数値を算出する必要がある場合はタグ内に記述したほうが便利です。 以下の 2 つは両方とも 10,000 という出力となります。

JSP
<fmt:formatNumber groupingUsed="true" value="10000" />
<fmt:formatNumber groupingUsed="true">
    <c:if test="true">10000</c:if>
</fmt:formatNumber>
type="number|currency|percent"
optional

数値のフォーマットタイプを指定します。number (数値), currency (通貨), percent (パーセント) のいずれかを指定できます。

日本 (ja_JP) におけるそれぞれのデフォルトフォーマットを使用した場合の出力は以下の通りです。

JSP
<fmt:formatNumber type="number" value="10000" /> → 10,000
<fmt:formatNumber type="currency" value="100.0" /> → ¥100
<fmt:formatNumber type="percent" value="1.0" /> → 100%
pattern="数値パターン"
optional

フォーマットパターンをカスタマイズします。 java.text.DecimalFormat に指定できるパターンを使用することが出来ます。

JSP
<fmt:formatNumber value="50" pattern="000.00" /> → 050.00
<fmt:formatNumber value="50" pattern="0.00E0" /> → 5.00E1
currencyCode="通貨コード"
optional

ISO 4217Google I'm Feeling Lucky™ で定義されている通貨コードを指定します。 typecurrency を選択したりパターンに一般通貨記号 ¤ を使用した場合に適用されます。省略時は現在のロケールの通貨コードが使用されます。

currencySymbol="通貨記号"
optional

通貨を表示する場合に使用する通貨記号を指定します。 typecurrency を選択したりパターンに一般通貨記号 ¤ を使用した場合に適用されます。省略時は現在のロケールの通貨記号が使用されます。

groupingUsed="true|false"
optional

ロケールに依存するグルーピング (日本なら 3 桁コンマ区切り) を使用するかどうかを true, false で指定します。

maxIntegerDigits="数値"
optional

整数部の最大桁数を指定します。 出力する数値の整数部の桁数がこの数値を超える場合は上位桁が削除されます。

JSP
<fmt:formatNumber value="10000" maxIntegerDigits="3" /> → 000
minIntegerDigits="1|数値"
optional

整数部の最小桁数を指定します。 出力する数値の整数部の桁数がこの数値に満たない場合は上位桁に 0 が追加されます。

JSP
<fmt:formatNumber value="5" minIntegerDigits="3" /> → 005
maxFractionDigits="数値"
optional

小数部の最大桁数を指定します。 出力する数値の小数部の桁数がこの数値を超える場合は下位桁が四捨五入されて削除されます。

JSP
<fmt:formatNumber value="3.1415" maxFractionDigits="2" /> → 3.14
<fmt:formatNumber value="2.7182" maxFractionDigits="2" /> → 2.72
minFractionDigits="数値"
optional

小数部の最小桁数を指定します。 出力する数値の小数部の桁数がこの数値に満たない場合は下位桁に 0 が追加されます。

JSP
<fmt:formatNumber value="5.2" minFractionDigits="2" /> → 5.20
var="変数名"
optional
フォーマット結果を文字列として格納する変数名です。
scope="page|request|session|application"
optional
var 属性で指定した変数のスコープです。 page, request, session, application のいずれかを指定します。

内 容

value 属性を省略した場合の数値。EL やカスタムタグを使用することができます。

使用例

アメリカとフランスのロケールに対してデフォルトのフォーマットを出力してみます。
JSP
<fmt:setLocale value="en_US" />
<fmt:formatNumber type="number" value="10000" /> → 10,000
<fmt:formatNumber type="currency" value="100.0" /> → $100.00
<fmt:formatNumber type="percent" value="1.0" /> → 100%
<fmt:setLocale value="fr_FR" />
<fmt:formatNumber type="number" value="10000" /> → 10 000
<fmt:formatNumber type="currency" value="100.0" /> → 100,00 €
<fmt:formatNumber type="percent" value="1.0" /> → 100%
CVS 2008/03/09