fmt:formatNumber use locale display negative currency in -$xxx.xx format in JSTL

First, we want to know our own locale,how to display the locale in a JSTL?

<c:out value="${pageContext.request.locale.language}"/> 


I'm confused with the jstl tag libs:

I want to format a number to a currency with german style

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
    <title>format number</title>
</head>
<body>
    <c:set var="val" value="40.52" />
    <p> Currency in USA
    <fmt:setLocale value="en_US" scope="session"/>
    <fmt:formatNumber value="${val}" type="currency" />
    </p>
    <p>Currency in Germany
    <fmt:setLocale value="de_DE" scope="session"/>
    <fmt:formatNumber value="${val}" type="currency"/>
    </p>
</body>
</html>

And thats the output:
Currency in USA $40.52
Currency in Germany 40,52 



I am using fmt:formatNumber to format currency in JSTL, it will display negative currency in ($100) format, if you want to make it display negative currency in negative format instead of ($100).

I would suggest:

<fmt:formatNumber type="currency" pattern="$#,##0.00;-$#,##0.00" value="-10000" />

You can remove '$' from the pattern, if you like.


order example:

<c:set  var="val"  value="46563746375"/>
<fmt:formatNumber  value="${val}"  pattern="###.###E0"/>

If you run the above code you will see the number is formatted as the pattern which is 46.5637E9 .

關注公衆號,分享乾貨,討論技術




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章