How do I format a Double with String.format
to String with a dot between the integer and decimal part?
String s = String.format("%.2f", price);
The above formats only with a comma: ",".
Just use %. 2f as the format specifier. This will make the Java printf format a double to two decimal places. /* Code example to print a double to two decimal places with Java printf */ System.
Truncation Using Casting If our double value is within the int range, we can cast it to an int. The cast truncates the decimal part, meaning that it cuts it off without doing any rounding.
To be able to print any given number with two zeros after the decimal point, we'll use one more time DecimalFormat class with a predefined pattern: public static double withTwoDecimalPlaces(double value) { DecimalFormat df = new DecimalFormat("#. 00"); return new Double(df.
String.format(String, Object ...)
is using your JVM's default locale. You can use whatever locale using String.format(Locale, String, Object ...)
or java.util.Formatter
directly.
String s = String.format(Locale.US, "%.2f", price);
or
String s = new Formatter(Locale.US).format("%.2f", price);
or
// do this at application startup, e.g. in your main() method Locale.setDefault(Locale.US); // now you can use String.format(..) as you did before String s = String.format("%.2f", price);
or
// set locale using system properties at JVM startup java -Duser.language=en -Duser.region=US ...
Based on this post you can do it like this and it works for me on Android 7.0
import java.text.DecimalFormat import java.text.DecimalFormatSymbols DecimalFormat df = new DecimalFormat("#,##0.00"); df.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.ITALY)); System.out.println(df.format(yourNumber)); //will output 123.456,78
This way you have dot and comma based on your Locale
Answer edited and fixed thanks to Kevin van Mierlo comment
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