I am receiving double
values from API call .That method return this kind of values 2.0
, 2.344
, 2.034
, 3.1
etc.
If I receive value like 2.0
, 4.0
, I want to convert them 2
, 4
. And I need do this conversions only 2.0
, 3.0
like values.
How can I achieve this?
Assuming this is a matter of formatting a double
value as a String
, ensuring there are no trailing insignificant zeroes, I'd advise using a DecimalFormat
to control the formatting. For example:
import java.text.*;
import java.util.*;
class Test {
public static void main(String[] args) throws Exception {
print(5.0d);
print(5.000000001d);
print(5.1d);
print(123456789.1d);
print(12345e-50);
}
private static void print(double value) {
NumberFormat format = new DecimalFormat(
"0.############",
DecimalFormatSymbols.getInstance(Locale.US));
String text = format.format(value);
System.out.println(text);
}
}
Note the use of Locale.US
to always end up with a dot as the decimal separator.
The final example in main
shows the limitations here - numbers very close to 0 will be formatted as "0", as I haven't provided enough optional digits (the #
parts) to format them more appropriately. It's not clear what you want in those cases anyway though; the default representation would be 1.2345E-46
.
See more on this question at Stackoverflow