I am using JSF 2 and RichFaces 3. Here in the picture shown below, numbers are being displayed as what they are in the database.
But I want to display them as 6749395.20
if fraction part is there and 5095138.00
if no fraction part is there.
As of now I have tried something like this.
<rich:column>
<f:facet name="header">
<h:outputText value="Total Amount"/>
</f:facet>
<h:outputText value="#{rr[2]}">
<f:convertNumber type="number" groupingUsed="true" minFractionDigits="2" pattern="#0.00"/>
</h:outputText>
</rich:column>
Actually I am showing all of them together, but I have tried with all of them as all possible combinations with type
, groupingUsed
, minFractionDigits
and pattern
.
Why does it not work? How is this caused and how can I solve it?
1. DecimalFormat(“0.00”) We can use DecimalFormat("0.00") to ensure the number is round to 2 decimal places.
format("%. 2f", 1.23456); This will format the floating point number 1.23456 up-to 2 decimal places, because we have used two after decimal point in formatting instruction %.
As follows: var answer = (Math. round((num * 1000)/10)/100). toFixed(2);
In short, the %. 2f syntax tells Java to return your variable ( val ) with 2 decimal places ( . 2 ) in decimal representation of a floating-point number ( f ) from the start of the format specifier ( % ).
That can happen if the value is not a Number
at all, for example a String
. You're then basically using the wrong type for the data it represents. To represent currencies in Java, you should be using BigDecimal
. Also, make sure that the type in the database table is right, i.e. it should not be a varchar, but a decimal.
Once you've fixed the data type, then the <f:convertNumber>
will work as you told it to do. Note that the pattern
attribute will override the groupingUsed
and minFractionDigits
. You should use either the pattern
or the others. Also, type="number"
is already the default, so it can be removed.
So, either use
<f:convertNumber pattern="#0.00" />
or
<f:convertNumber groupingUsed="true" minFractionDigits="2" />
Note that they generate different formats. You probably want to set grouping to false
.
You can also use type="currency"
, it will then automatically apply the right pattern as per the UIViewRoot#getLocale()
:
<f:convertNumber type="currency" />
See also the tag library documentation and the DecimalFormat
javadoc.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With