How to remove trailing zero in a String value and remove decimal point
23,097
The Java library has a built-in class that can do this for it. It's BigDecimal
.
Here is an example usage:
BigDecimal number = new BigDecimal("10.2270");
System.out.println(number.stripTrailingZeros().toPlainString());
Output:
10.227
Note: It is important to use the BigDecimal
constructor that takes a String
. You probably don't want the one that takes a double
.
Here's a method that will take a Collection<String>
and return another Collection<String>
of numbers with trailing zeros removed, gift wrapped.
public static Collection<String> stripZeros(Collection<String> numbers) {
if (numbers == null) {
throw new NullPointerException("numbers is null");
}
ArrayList<String> value = new ArrayList<>();
for (String number : numbers) {
value.add(new BigDecimal(number).stripTrailingZeros().toPlainString());
}
return Collections.unmodifiableList(value);
}
Example usage:
ArrayList<String> input = new ArrayList<String>() {{
add("10.0"); add("10.00"); add("10.10"); add("10.2270");
}};
Collection<String> output = stripZeros(input);
System.out.println(output);
Outputs:
[10, 10, 10.1, 10.227]
Author by
Marjer
Updated on August 28, 2020Comments
-
Marjer over 3 years
How do I remove trailing zeros in a String value and remove decimal point if the string contains only zeros after the decimal point? I'm using the below code:
String string1 = Double.valueOf(a).toString()
This removes trailing zeros in (10.10 and 10.2270), but I do not get my expected result for 1st and 2nd inputs.
Input
10.0 10.00 10.10 10.2270
Expected output
10 10 10.1 10.227
-
jdphenix over 9 yearsI discovered that
stripTrailingZeros()
with also a call totoPlainString()
results in output that is outside of your spec. I have corrected my answer. -
Kick Buttowski over 9 yearsI did not ask the question lol
-
jdphenix over 9 yearsThis would remove anything beyond the 2nd mantissa digit.
-
TheLostMind over 9 yearsI don't mind getting downvoted. But I would like to know why?
-
Scary Wombat over 9 yearsnot the DV, but as someone else said "May not work in every locale. Some use the decimal point as group separators"
-
ycomp over 6 yearswhile technically correct it is not useful for me, case in point:
1.23
becomes1.229999999999999982236431605997495353221893310546875
. So yes, no trailing zeros for sure –