I need to remove trailing zeros from BigDecimal
along with RoundingMode.HALF_UP
. For instance,
Value Output 15.3456 <=> 15.35 15.999 <=> 16 //No trailing zeros. 15.99 <=> 15.99 15.0051 <=> 15.01 15.0001 <=> 15 //No trailing zeros. 15.000000<=> 15 //No trailing zeros. 15.00 <=> 15 //No trailing zeros.
stripTrailingZeros()
works but it returns scientific notations in situations like,
new BigDecimal("600.0").setScale(2, RoundingMode.HALF_UP).stripTrailingZeros();
In this case, it returns 6E+2
. I need this in a custom converter in JSF where it might be ugly for end users. So, what is the proper way of doing this?
stripTrailingZeros() is an inbuilt method in Java that returns a BigDecimal which is numerically equal to this one but with any trailing zeros removed from the representation. So basically the function trims off the trailing zero from the BigDecimal value.
Java For Testers The replaceAll() method of the String class accepts two strings representing a regular expression and a replacement String and replaces the matched values with given String. The ^0+(?! $)"; To remove the leading zeros from a string pass this as first parameter and “” as second parameter.
Use toPlainString()
BigDecimal d = new BigDecimal("600.0").setScale(2, RoundingMode.HALF_UP).stripTrailingZeros(); System.out.println(d.toPlainString()); // Printed 600 for me
I'm not into JSF (yet), but converter might look like this:
@FacesConverter("bigDecimalPlainDisplay") public class BigDecimalDisplayConverter implements Converter { @Override public Object getAsObject(FacesContext context, UIComponent component, String value) { throw new BigDecimal(value); } @Override public String getAsString(FacesContext context, UIComponent component, Object value) { BigDecimal bd = (BigDecimal)value; return bd.setScale(2, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString(); } }
and then in xhtml:
<h:inputText id="bigDecimalView" value="#{bigDecimalObject}" size="20" required="true" label="Value"> <f:converter converterId="bigDecimalPlainDisplay" /> </h:inputText>
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